不能向局部变量赋予默认值以及必须声明标量变量——sqlserver存储过程

同事让我帮忙调试一个sqlserver存储过程,首先说一下环境:sqlSERVER 2005

报错信息如下:

消息 139,级别 15,状态 1,过程 PEditTableField,第 0 行
不能向局部变量赋予认值。
消息 137,级别 15,状态 1,过程 PEditTableField,第 29 行
必须声明标量变量 "@sqlEmpty"。
消息 137,级别 15,状态 1,过程 PEditTableField,第 31 行
必须声明标量变量 "@sqlEmpty"。

......

解析:

        主要是在

 ALTER PROCEDURE [dbo].[PEditTableField]
@EditTableName Nvarchar(200),--表名
......
AS
BEGIN
SET NOCOUNT ON

BEGIN TRANSACTION--开始事务
DECLARE @errorSun INT --定义错误计数器
SET @errorSun=0 --没错为0
declare @sqlEmpty Nvarchar(100)='' --sql语句中设置是否为空的字符串x

......

END

可以看到

declare @sqlEmpty Nvarchar(100)=''

位于BEGIN...END里面,所以它属于局部变量。

根据它的报错信息,大概猜测可能要改为:

declare @sqlEmpty Nvarchar(100)

set @sqlEmpty =''

然后把语句中所有属于该类型的语句全部修改过来,运行,ok,还就这么通过了。^_^

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...