簡體   English   中英

使用具有動態表名稱的存儲過程插入值

[英]Insert values using stored procedure with dynamic table name

我有此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行無效的列名稱“ caress”。 消息207,級別16,狀態1,第1行無效的列名稱'Caress'。 消息207,級別16,狀態1,第1行無效的列名稱'asf'。 消息207,級別16,狀態1,第1行無效的列名稱“ asd”。 消息207,級別16,狀態1,第1行無效的列名稱'a @ dfsgsd'。 消息207,級別16,狀態1,第1行無效的列名稱“ Female”。

當我打印我的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 ....)來輸入值,請幫忙。謝謝!

嘗試

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM