【问题标题】:Not able to detect error in stored procedure无法检测存储过程中的错误
【发布时间】:2013-05-14 08:42:54
【问题描述】:

我是存储过程的新手。

我写了以下存储过程:

create proc sp_TaxBrock
as
BEGIN
   Declare @intTax int,@intBrockrage int,@sum int
   set @intTax = (select Tax from partyRegister where partyCode = '0L036')
   set @intBrockrage = (select brockrage from partyRegister where partyCode = '0L036')

   set @sum = @intTax+@intBrockrage

   select @sum
   print @sum
   /*print @intTax+@intBrockrage;*/
go

导致此错误:

消息 102,级别 15,状态 1,程序 sp_TaxBrock,第 12 行
'@sum' 附近的语法不正确。

无法找出错误所在。

我尝试在不同位置添加分号 (;),但错误仍然相同。

请帮帮我。

【问题讨论】:

  • 旁注:您应该为您的存储过程使用sp_ 前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免 sp_ 并使用其他东西作为前缀 - 或者根本不使用前缀!
  • 另外:这个分配:set @intTax = (select Tax from partyRegister where partyCode = '0L036') 可以写成更简单的select @intTax = Tax from partyRegister where partyCode = '0L036',如果你可以确定只有一行会匹配这个条件
  • @marc_s 是的,谢谢,我会记住这些事情。谢谢。

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


【解决方案1】:

go 之前添加一个end

create proc sp_TaxBrock
as
BEGIN

  Declare @intTax int,@intBrockrage int,@sum int
  set @intTax =(select Tax from partyRegister where partyCode='0L036')
  set @intBrockrage=(select brockrage from partyRegister where partyCode='0L036')

  set @sum = @intTax+@intBrockrage

  select @sum
  print @sum
/*print @intTax+@intBrockrage;*/
end
go

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 2021-08-06
    • 2013-06-12
    • 2012-12-07
    • 2018-05-12
    相关资源
    最近更新 更多