微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不能向局部变量赋予默认值以及必须声明标量变量——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,还就这么通过了。^_^

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐