繁体   English   中英

构建存储过程,将数据插入到接收的表中

[英]Build Stored Procedure that inserts data into a received table

我建立了一个过程,该过程接收带有表名的参数,并将新数据插入该表中。

CREATE PROCEDURE sp_Ins 
     @tabela NVARCHAR(80)
AS
     INSERT INTO @tabela (CustomerID, CustomerPW) 
     VALUES (1, '123')
GO

CREATE PROCEDURE SP1 
     @tabela NVARCHAR(80)
AS
     EXEC sp_Ins @tabela
GO

EXEC SP1 'CustomerPW'

但我收到此消息:

必须声明表变量@tabela

如何声明接收到的参数以将该参数识别为表格?

抱歉,您需要使用动态SQL。 您不能插入字符串:

CREATE PROCEDURE sp_Ins (@tabela nvarchar(80))
AS
BEGIN
    declare @sql nvarchar(max) = '
INSERT INTO [t](CustomerID, CustomerPW)
    VALUES (1, ''123'')
;
    set @sql = replace(@sql, '[t]', QUOTENAME(@tablea));

    exec sp_executesql @sql;
END;

注意:如果tablea可以使用多部分命名,则可能不需要quotename()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM