SQL-查询作为参数
我有密码:SQL-查询作为参数,sql,sql-server,tsql,sp-executesql,Sql,Sql Server,Tsql,Sp Executesql,我有密码: DECLARE @sqlQuery NVARCHAR(4000); DECLARE @stn NVARCHAR(4000); SET @stn=N'SELECT cast(isnull(SUBSTRING(CDN.DokSumT(16,739684,1045,1,32768,1,1,739684,1,2,1,0,78877,0,3,1,1,0,0,0,0,0,-1) , 9 , 7 ),0) as decimal (28,4))'; SELECT @sqlQuery = 'SELEC
DECLARE @sqlQuery NVARCHAR(4000);
DECLARE @stn NVARCHAR(4000);
SET @stn=N'SELECT cast(isnull(SUBSTRING(CDN.DokSumT(16,739684,1045,1,32768,1,1,739684,1,2,1,0,78877,0,3,1,1,0,0,0,0,0,-1) , 9 , 7 ),0) as decimal (28,4))';
SELECT @sqlQuery = 'SELECT GIDNumber, Name, @stn as stn FROM Table_342 WHERE Name LIKE ''%ABLE%''';
EXEC sp_executesql @sqlQuery, N'@stn NVARCHAR(4000)', @stn;
此请求返回
在“stn”列中,我希望有一个查询结果,而不是查询。
怎么做?请帮忙。试试这样的
DECLARE @sqlQuery NVARCHAR(MAX)
, @stn NVARCHAR(MAX)
, @stn_R DECIMAL(28,4);
SET @stn = N'SELECT @stn_R = cast(isnull(SUBSTRING(CDN.DokSumT(16,739684,1045,1,32768,1,1,739684,1,2,1,0,78877,0,3,1,1,0,0,0,0,0,-1) , 9 , 7 ),0) as decimal (28,4))';
EXEC sp_executesql @stn
, N'@stn_R DECIMAL(28,4) OUTPUT'
, @stn_R OUTPUT
SELECT @sqlQuery = 'SELECT GIDNumber, Name, @stn_R as stn FROM Table_342 WHERE Name LIKE ''%ABLE%''';
EXEC sp_executesql @sqlQuery
, N'@stn_R DECIMAL(28,4)'
, @stn_R;
注
您的整个查询被视为一个参数,因为只有第一个参数需要SQL语句。以下任何参数都是变量声明或变量值
您需要将动态查询的执行分为两部分,并使用输出参数从第一个查询中获取值并将其传递给第二个查询。首先尝试使用非动态方式。一旦你得到..使用EXEC(@sqlquery)动态执行我不得不问,尽管我怀疑答案是“是”和“不知道”-这绝对是解决问题的最有效方法吗?谁设计了这个数据库?我不知道,但我想是这样:)我有这个错误消息137,级别15,状态2,第1行必须声明标量变量“@stan”。