【发布时间】:2023-04-06 21:26:01
【问题描述】:
我有这个 SQL 存储过程(不过我正在修改它)
ALTER Procedure [dbo].[spUpdateProfile]
(
@TableName nvarchar(30),
@First_Name nvarchar(max),
@Middle_Name nvarchar(max),
@Last_Name nvarchar(max),
@Birthday date,
@Address nvarchar(max),
@Websites nvarchar(max),
@Email nvarchar(max),
@Contact_Number nvarchar(max),
@Gender nvarchar(max))
AS
DECLARE @SQLString NVARCHAR(MAX)
SET @SQLString = 'TRUNCATE TABLE ' + @TableName
EXEC (@SQLString)
DECLARE @SQLString1 NVARCHAR(MAX)
SET @SQLString1= 'INSERT INTO [dbo].[' + @TableName +
'](First_Name,
Middle_Name,
Last_Name,
Birthday,
Address,
Websites,
Email,
Contact_Number,
Gender) VALUES(' + @First_Name + ','
+@Middle_Name + ','
+@Last_Name + ','
+convert(nvarchar(max),@Birthday) + ','
+@Address + ','
+@Websites + ','
+@Email + ','
+@Contact_Number +','
+@Gender +')'
print @SQLString1
EXEC (@SQLString1)
然后当我尝试输入值时...
USE [PersonalOrganizerDB]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[spUpdateProfile]
@TableName = N'User2',
@First_Name = N'Caress',
@Middle_Name = N'caress',
@Last_Name = N'Caress',
@Birthday = N'02/06/1992',
@Address = N'asf',
@Websites = N'asd',
@Email = N'a@dfsgsd',
@Contact_Number = N'42',
@Gender = N'Female'
SELECT 'Return Value' = @return_value
GO
我收到这些错误
消息 207,级别 16,状态 1,第 1 行无效的列名称“Caress”。消息 207,第 16 级,状态 1,第 1 行无效的列名称“爱抚”。消息 207, 第 16 级,状态 1,第 1 行 列名“Caress”无效。消息 207,级别 16, State 1, Line 1 列名“asf”无效。消息 207,第 16 级, 状态 1,第 1 行 列名“asd”无效。消息 207,级别 16,状态 1, 第 1 行无效的列名“a@dfsgsd”。消息 207,级别 16,状态 1, 第 1 行无效的列名“女性”。
当我打印我的 SQLstring 时,它是……
INSERT INTO [dbo].[User2](First_Name,
Middle_Name,
Last_Name,
Birthday,
Address,
Websites,
Email,
Contact_Number,
Gender) VALUES(Caress,caress,Caress,1992-02-06,asf,asd,a@dfsgsd,42,Female)
顺便说一句,我在 C# Web 程序上使用存储过程。当我运行我的网站时,我看到了相同的错误消息。我尝试使用“在 MSSQL 管理服务器和 C# 程序上执行存储过程(通过 parameters.add....)输入值,请帮助。谢谢!
【问题讨论】:
-
我认为
string值的查询中缺少逗号。 -
@ShahidIqbal 那部分在哪里?请告诉我它在哪里。您可能会在那里看到 SQLString1 的内容。我使用“print SQLString1”命令来验证。我看到没有逗号丢失。如果我错过了请告诉我
标签: sql stored-procedures dynamic insert