同事让我帮忙调试一个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,还就这么通过了。^_^