SELECT 语句中的 T-SQL EXEC

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

我们有一个 SELECT 语句,其中包含如下自定义函数调用:

SELECT 
    P.Identifier, P.IdentifierType,
    dbo.GetBinaryData(P.Identifier, P.IdentifierType) AS BinData 
FROM 
    Parts P

现在,由于某种原因,我们必须从 T-SQL 代码中删除显式模式(因此,从此处显示的代码中删除

dbo
)。

使用动态 SQL 和

EXEC sp_executesql
只能在
SELECT
语句之外使用,对吗?

我们已经尝试过这个:

DECLARE @SqlStmt nvarchar(4000);
DECLARE @params nvarchar(4000);
DECLARE @ret varbinary(max);

SELECT @sc = (select schema_name());
SELECT @SqlStmt= @sc + '.GetBinaryData(@Identifier,@IdentifierType)';
SELECT @params= N'@Identifier nvarchar(80), '
      + N'@IdentifierType int';
SELECT P.Identifier, P.IdentifierType, (EXEC @ret = sp_executesql @SqlStmt, @params,P.Identifier,P.IdentifierType) AS BinData
FROM Parts P

但是我收到了错误

关键字 EXEC 附近的语法不正确

有没有办法在

SELECT
语句中调用函数?

sql-server function t-sql
1个回答
0
投票

“出于某种原因,我们必须从 T-SQL 代码中删除显式模式”

不,你真的不知道。 标量 UDF 需要要调用的模式。 因此,请返回给您执行此任务的人,并告诉他们您需要标量 UDF 的例外。 建议他们将所有标量 UDF 放入单个架构中,并允许在查询中显式限定该架构。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.