/* 验证数据是否存在
declare @mid bigint
execute('select @mid=id from ' + @DataSrc + ' where '+@Condition)
if @mid is NULL
begin
set @VAL_ERROR = 50102
return
end
else
begin */
/* 组装查询条件 */
if @Condition = ''
begin
set @VAL_ERROR = 50001
return
end
/* 组装查询语句 */
set @sql = 'update ' + @DataSrc + ' set '+ @ColName + ' where ' + @Condition
/* 执行查询 */
execute(@sql)
/* end */
饱错@mid未定义,我把他注释掉(如上),就好了,谁知道错在那里了吗?
參考答案:execute('select @mid=id from ' + @DataSrc + ' where '+@Condition)
中的语句和外面的语句不是一个环境的,所以句中的@mid不是你外面定义的那个,换句话说,你execute里的那个是没有被定义过的,当然会报错。
你应当使用系统存储过程sp_executesql 以取得该值。
用法你可以参考下面的微软帮助,偶很久没写了,具体怎么写还是你自己琢磨琢磨吧,实在不行CSDN上也可以去看看。