Man*_*ion 0 sql-server stored-procedures dynamic-sql
我有很多包含一些常见列(相同名称和数据类型)的表。在这些列上,我需要执行相同的操作,我想通过存储过程来执行此操作。但是,我目前可以使其工作的唯一方法是使用动态 sql,我宁愿避免这种情况。
有没有什么方法可以在不使用动态sql的情况下对不同的表(其中表名作为参数传递)使用存储过程?
您可以做的另一件事是创建一个视图,将类似的表联合在一起,并包含一个带有表名的定义列,然后在 where 子句中使用表名对该视图进行选择。
CREATE VIEW tablesviews AS
SELECT columns, 'TABLE1' as tablename
FROM Table1
UNION ALL
SELECT columns, 'TABLE2' as tablename
FROM Table2
...
SELECT {some columns}
FROM tableviews
WHERE Tablename=@table and [other where clauses]
Run Code Online (Sandbox Code Playgroud)