【问题标题】:stored procedure declaration error存储过程声明错误
【发布时间】:2013-05-16 08:22:37
【问题描述】:

我是存储过程的新手。

我在一个变量中获取列的值并使用 If 块检查它。

我的代码如下:

  create proc billRet 
as 
BEGIN
DECLARE @amt float
set @amt=select amount from bill where Id='2425'
If (@amt>1100.50 )
Begin
select @amt
print 'Amount greater '+@amt;
END
Else
Begin
select @amt
print 'Amount Smaller'+@amt
END
END
Go

它在打印语句和@amt 变量的声明中显示错误。

请告诉我哪里出错了。

请帮帮我。

【问题讨论】:

  • 请包含您收到的完整错误消息。

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


【解决方案1】:

类型在变量名之后:

DECLARE @amt float;

您必须手动转换为字符串并连接才能使打印工作:

print 'Amount greater ' + CONVERT(varchar(20),@amt);

(如果您不执行CONVERTCAST,则SQL Server 将尝试将字符串转换为float 并将两者相加)

也可能想要:

select @amt=amount from bill where Id='2425'

【讨论】:

  • 再次粘贴新代码,出现错误:Msg 156, Level 15, State 1, Procedure billRet, Line 5 关键字“select”附近的语法不正确。
  • @Freelancer - 请停止编辑您的问题,以免答案不再有意义 - 我尝试将其回滚,但这只是部分成功。我添加了另一个可能需要的修复。如果您想按现在的样子显示您的代码,请将其作为单独的代码示例添加到问题的底部,并清楚地标记为“这是迄今为止的答案让我明白的地方”或类似内容。
  • 真的很抱歉。下次会记得的。你的回答解决了问题。谢谢。
【解决方案2】:

试试这个,

SET @amt = (select amount from bill where Id='2425')

还有这个,

print 'Amount greater ' + CAST(@amt AS VARCHAR(50));

【讨论】:

  • 再次粘贴新代码,出现错误:Msg 156, Level 15, State 1, Procedure billRet, Line 5 关键字“select”附近的语法不正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
  • 2017-08-17
  • 1970-01-01
  • 1970-01-01
  • 2019-08-01
  • 2014-12-09
相关资源
最近更新 更多