gpt4 book ai didi

tsql - 在sql存储过程中传递表名

转载 作者:行者123 更新时间:2023-12-02 11:14:54 24 4
gpt4 key购买 nike

是否可以将表名作为输入参数传递给存储过程?

例如:

create procedure test
@tablename char(10)
as
begin
select * from @tablename
end
go

我知道这行不通。那么,如果我想将表名传递到存储过程中,最好的方法是什么?

非常感谢

最佳答案

最安全的方法是通过 View 。

创建一个 View ,该 View 联合您可能希望访问的所有表(并且所有表必须具有相同的列结构),并在行前添加表名称前缀。

CREATE VIEW MultiTable
AS
SELECT 'table1' AS TableName, * FROM table1
UNION ALL
SELECT 'table2' AS TableName, * FROM table2
UNION ALL
SELECT 'table3' AS TableName, * FROM table3

您的存储过程现在可以根据表名称进行过滤:

CREATE PROCEDURE test
@TableName varchar(100)
AS
SELECT * FROM MultiTable WHERE TableName = @TableName

这比使用动态 SQL 创建和执行更安全。

关于tsql - 在sql存储过程中传递表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10734465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com