我正在使用SQL Server 2017,我想创建一个存储过程,其中一个表名作为输入变量 . 我想要的程序是以各种方式更新该表 . 这个项目将每年进行两次,并且列总是相同的,所以我想尝试将其作为存储过程,因此我不必强调几行代码并每次执行 .
是否有一种简单的方法可以通过更新表的存储过程传递表名(添加列,计算列,替换列中的空值等) . 在一个基本示例中,一个任务只是用列中的0替换空值 . 我不知道如何设置它 . 我是否必须声明表格中的每一列?
CREATE PROCEDURE updteleform
@tablename TABLE
AS
BEGIN
UPDATE @tablename
SET Recog = 0
WHERE Recog IS NULL
END
GO
1 回答
我假设您要更新物理表 . SQL Server表变量不能以这种方式工作,而是将瞬态结果集传递给存储过程的方法 . 如果您的存储过程不这样做,则没有持久性 .
如果您要更新同一个表,那么只需编写该过程即可使用该表 .
如果您希望使用相同的脚本更新多个表,那么您应该更改过程以接受字符串参数,该字符串参数将是您希望它处理的表的名称,然后在存储过程中使用动态SQL .
就像是
然后用类似的东西来调用它: