动态SQL语句中输出参数的问题??达人进

windspeed 2007-03-30 01:55:39
DECLARE @S VARCHAR(50)
DECLARE @ind INT
DECLARE @cus INT
Declare @strTmp nVarchar(2000)

SELECT @S=CASE FSRC WHEN 6008 THEN 'SALE_PLAN_HTY' WHEN 6009 THEN 'LET_PLAN_HTY' END FROM CUS_REC_EDIT WHERE FID=3

set @strTmp=( 'SELECT @ind= B.FINDUSTRY,@cus=B.FCUSTOMER FROM CUS_REC_EDIT A INNER JOIN
(SELECT * FROM '+ @S + ' ) B ON A.FSRC_ID =B.FID WHERE A.FID=3' )

exec sp_executesql @strTmp,N'@ind int output',@IND OUTPUT,N'@cus int output',@CUS OUTPUT

SELECT @IND,@CUS
-------------
显示错误

消息 137,级别 15,状态 1,第 1 行
必须声明标量变量 "@cus"。
消息 102,级别 15,状态 1,第 2 行
'B' 附近有语法错误。


我想把那个字段的值输出来。。。。就这个要求。。谢谢
...全文
257 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
windspeed 2007-03-30
  • 打赏
  • 举报
回复
哦,原来格式搞错了。。多谢!!

sp_executesql (Transact-SQL) 2005

MSDN:http://msdn2.microsoft.com/en-us/library/ms188001.aspx

paoluo 2007-03-30
  • 打赏
  • 举报
回复
多了點東西,再修改下。


DECLARE @S VARCHAR(50)
DECLARE @ind INT
DECLARE @cus INT
Declare @strTmp nVarchar(2000)
SELECT @S=CASE FSRC WHEN 6008 THEN 'SALE_PLAN_HTY' WHEN 6009 THEN 'LET_PLAN_HTY' END FROM CUS_REC_EDIT WHERE FID=3

set @strTmp=( 'SELECT @ind= B.FINDUSTRY,@cus=B.FCUSTOMER FROM CUS_REC_EDIT A INNER JOIN
(SELECT * FROM '+ @S + ' ) B ON A.FSRC_ID =B.FID WHERE A.FID=3' )
exec sp_executesql @strTmp,N'@ind int output, @cus int output',@IND OUTPUT,@CUS OUTPUT

SELECT @IND,@CUS
paoluo 2007-03-30
  • 打赏
  • 举报
回复

DECLARE @S VARCHAR(50)
DECLARE @ind INT
DECLARE @cus INT
Declare @strTmp nVarchar(2000)
Declare @FSRC Int
SELECT @S=CASE FSRC WHEN 6008 THEN 'SALE_PLAN_HTY' WHEN 6009 THEN 'LET_PLAN_HTY' END FROM CUS_REC_EDIT WHERE FID=3

set @strTmp=( 'SELECT @ind= B.FINDUSTRY,@cus=B.FCUSTOMER FROM CUS_REC_EDIT A INNER JOIN
(SELECT * FROM '+ @S + ' ) B ON A.FSRC_ID =B.FID WHERE A.FID=3' )
Print @strTmp
exec sp_executesql @strTmp,N'@ind int output, @cus int output',@IND OUTPUT,@CUS OUTPUT

SELECT @IND,@CUS
CathySun118 2007-03-30
  • 打赏
  • 举报
回复
set @strTmp=( 'SELECT @ind= B.FINDUSTRY,@cus=B.FCUSTOMER FROM CUS_REC_EDIT A INNER JOIN
(SELECT * FROM '+ @S + ' ) B ON A.FSRC_ID =B.FID WHERE A.FID=3' )
这句话有问题,
子查询中select了两个值,不能付值给@strTmp

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧