【问题标题】:Handle more than one returning value in stored procedure在存储过程中处理多个返回值
【发布时间】:2013-05-22 09:10:02
【问题描述】:

我有以下存储过程

ALTER PROC spInParam
(
    @partyCode NVARCHAR(50)
)
AS
BEGIN
DECLARE @totalAmount float
DECLARE @setLoop int
DECLARE @setCNT int
print 'Party Code '+@partyCode;
set @totalAmount=(select TotalAmount from BillParticular where partyCode=@partyCode)
set @setLoop=(select count(TotalAmount) from BillParticular where partyCode=@partyCode)
SET @setCNT=0;
WHILE @setCNT<=@setLoop
BEGIN
print 'Total Bill Amt.'+CONVERT(nvarchar(50),@totalAmount);
set @setCNT=@setCNT+1;
END
return CONVERT(NVARCHAR(50),@totalAmount)
END

在这个存储过程中,

select TotalAmount from BillParticular where partyCode=@partyCode 此查询返回多个值。 (即特定的@partyCode 有两个 TotalAmounts)我怎样才能把它们循环起来?

我为此设置了while循环,如代码所示。

这个存储过程编译得很好。但是在执行时,它给了我以下错误:

Party Code 0L036
Msg 512, Level 16, State 1, Procedure spInParam, Line 11
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

请指导我在现有程序中应该做什么。

如果我在任何地方犯了错误,请告诉我。

请帮帮我。

样本输出:

Party Code: 0L036
Total Bill Amount:1074432000
Total Bill Amount:2108208000

账单明细表:

编辑:

DECLARE @partyCode nvarchar(50);
WITH records
AS
(
    SELECT  'Total Bill Amount : ' + CONVERT(nvarchar(50), TotalAmount) str_output
    FROM    BillParticular 
    WHERE   PartyCode = @partyCode
)
SELECT  'Party Code ' + @partyCode str_output
UNION ALL
SELECT  str_output FROM records

返回NULL

【问题讨论】:

  • 您是要使用游标还是需要子查询中的第一项?
  • 是的,我会的,等一下
  • @JW웃 请查看编辑
  • 记录怎么样?
  • 好的,会拍截图

标签: sql sql-server-2005 stored-procedures


【解决方案1】:
WITH records
AS
(
    SELECT  'Total Bill Amount : ' + CONVERT(nvarchar(50), TotalAmount) str_output
    FROM    BillParticular 
    WHERE   PartyCode = @partyCode
)
SELECT  'Party Code ' + @partyCode str_output
UNION ALL
SELECT  str_output FROM records

【讨论】:

  • 我必须用这个代替“从 BillParticular 中选择 TotalAmount where partyCode=@partyCode”???
  • 如果它给出你的输出,请先尝试执行查询,否则我会更新它。
  • 我已经更新了我的问题并提出了新的查询,它返回 null
  • 是的,知道了,我没有为这个查询传递 0L036 参数。我把它设置为@partyCode='0L036'
  • 好像是sql中的'views'。
猜你喜欢
  • 1970-01-01
  • 2016-12-25
  • 1970-01-01
  • 1970-01-01
  • 2016-08-14
  • 2016-08-06
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多