【发布时间】:2020-11-30 20:00:42
【问题描述】:
我有一个现有的 sql server 存储过程,我正在尝试更新它。每次我在其上运行 Alter Procedure 时,都会出现以下错误:
SQL Error: Must declare the scalar variable "@varOne".
我已经在 Google 上四处搜索,但找不到任何可以帮助解决此错误的方法...:/以下步骤:
ALTER PROCEDURE [dbo].[sp_test] (
-- Declare
@varOne tinyint,
@varTwo numeric(17,0)
) As
Set NoCount On
-- Select
Select *
Into #t
From SQL_Test.dbo.trans with (nolock)
Where test>=123
And Case @varOne When 1 Then rNo When 2 Then iNo When 3 Then sNo End = @varTwo
Union
Select *
From SQL_Test.dbo.trsave with (nolock)
Where date_time > DateAdd(dd, -60, GetDate())
And Case @varOne When 1 Then rNo When 2 Then iNo When 3 Then sNo End = @varTwo
编辑:我通过删除原始程序并重新创建它来解决问题。仍然好奇为什么改变不起作用。猜测是客户端使用 SQL Server 2012 造成的。
【问题讨论】:
-
旁注:Bad habits : Putting NOLOCK everywhere & Is the sp_ prefix still a no-no?(tl;dr yes)。
-
另外,不能复制:db<>fiddle.
-
不知道这些坏习惯。我只是在尝试编辑现有的过程,每次尝试更改它时都会遇到该错误。
-
这些坏习惯供你阅读和理解。至于错误,正如我所提到的,我无法重现它;该语句不会产生错误。
-
好像是这样。很高兴您能解决这个问题。
标签: sql-server stored-procedures alter