在SQL Server中的SELECT语句中使用EXEC

Ruc*_*ami 11 sql sql-server

我需要execselect子句中使用.exec的查询是根据表的列创建的,如果使用select子句的话.我想做的是如下:

 SELECT distinct 
     MTMain.[TableName],
     MTMain.[TableFKey], 
     (select IsActive (exec GetStringForIsActive MTMain.[TableName],MTMain.[TableFKey]))
 FROM
     [MasterTableForLanguage] MTMain
Run Code Online (Sandbox Code Playgroud)

GetStringForIsActive是我想要为每一行选择的存储过程MasterTableForLanguage.
stored procedure将使用EXEC执行以下字符串

select IsActive from [TableName] where PKID= cast([TableFKey] as int)
Run Code Online (Sandbox Code Playgroud)

TableName和TableFKey将是存储过程的输入.

Boo*_*mer 0

在 SELECT 子句中使用函数而不是存储过程。

编辑:

创建该函数

CREATE FUNCTION function1 (@TableName nvarchar(10),@TableFKey nvarchar(10))
RETURNS nvarchar(100) AS  
BEGIN 
    -- do whatever here
END
Run Code Online (Sandbox Code Playgroud)

然后

SELECT distinct 
     MTMain.[TableName],
     MTMain.[TableFKey], 
     function1(MTMain.[TableName],MTMain.[TableFKey])
 FROM
     [MasterTableForLanguage] MTMain
Run Code Online (Sandbox Code Playgroud)

这有道理吗?

  • -1 这个答案相当于“我如何从这里到达X?” “哦,我不会从这里开始。” 通常存储过程是由其他人提供的,因此除非您破解了他们的数据库,否则这是没有用的。 (5认同)
  • 有很多事情不能在函数中完成,但可以在过程中完成。 (3认同)