SQL Server中的机制允许您将存储过程存储在表中,并在从select语句中检索存储过程后调用它?

问题描述 投票:0回答:1

基本上,如果我像这样设置了一些数据库表:

Object State
Id|Description|State
1 | blah      | A
2 | blah blah | A
3 | blurgh    | B

StateAction
Id|State|Action
1 | A   | ActionA
2 | B   | ActionB

[在T-SQL,SQL Server 2017+中,是否存在执行类似操作的本机方法

@proc ProcedureType --No idea if this is a thing

SELECT @proc = SA.Action
FROM ObjectState OS
JOIN StateAction SA ON OS.State = SA.State
WHERE OS.Id = 3

EXEC @proc

基本上,SQL或函数/过程类型中是否存在等效的函数指针?在关系数据库上下文中,是否有任何可用于处理此类事情的模式?

sql sql-server tsql stored-procedures function-pointers
1个回答
0
投票

您可以调用名称存储在TSQL变量中的过程,例如:

use tempdb

go
create procedure foo
as
begin
  select 1 a;
end
go

declare @proc sysname = 'foo';
exec @proc;

或者您可以执行从所需位置检索的任意字符串(注意exec的语法略有不同)。

declare @sql nvarchar(max) = 'select 1 a';
exec ( @sql );
© www.soinside.com 2019 - 2024. All rights reserved.