我想在表中存储少量编译的存储过程,并希望动态触发它们。这些过程将在另一个过程名称GetDetails
中触发。我将表格设计如下:
表:SQLtab
Id SQLText ParamId
1 GetProdDetails 1
2 GetSuppDetails 2
表:SQLParams
ParamId SQLParam
1 prodId
2 suppId
编译过程的参数将由外部过程(GetDetails
)确定,该过程将从SQLtab
表中读取过程名称并触发它们。所以,我不能将过程参数值存储在表中。过程GetDetails
运行查询并确定prodId
,suppId
的参数值。我打算创建一个临时表来存储参数值,如下所示:
Id SQLText ParamVal
1 GetProdDetails 10
2 GetSuppDetails 12
在外部过程中创建临时表后,我可以使用参数值动态触发过程。不知何故,我觉得这不是最好的桌子/程序设计。有人可以提出更好的设计吗?
答案 0 :(得分:1)
为什么要在SQL Server编目视图为您完成时创建这些表并维护它们。
我只需使用以下查询来获取过程名称及其参数
SELECT po.name AS [Proc Name]
,pa.name AS [Param Name]
FROM sys.procedures po
INNER JOIN sys.parameters pa ON po.object_id = pa.object_id
WHERE po.name LIKE '%ProcName%'
-- AND po.is_ms_shipped = 0 --<-- add more filters as required