基本上,如果我像这样设置了一些数据库表:
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或函数/过程类型中是否存在等效的函数指针?在关系数据库上下文中,是否有任何可用于处理此类事情的模式?
您可以调用名称存储在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 );