select @e=@@error怎么没有了?求救
我在一个存储过程自动生成另一个对表的Insert的存储过程中,其它都对
但是在拼接SQL语句时做了如下
sql= 'create procedure ... '
sql=sql+ 'select @e=@@error '
sql=sql+ 'if @e=0.... '
exec sql
这样的语句生成到最后,这个select语句在最终生成的存储过程中没有出现,是怎么回事,该怎么用法,求救
------解决方案--------------------@e 这个变量没有定义
------解决方案--------------------try
declare @sql varchar(2000)
set @sql= 'create procedure ... '
set @sql=@sql+ 'as begin 定义 @e select @e=@@error '
set @sql=@sql+ 'if @e=0 ... '
exec ( ' '+@sql+ ' ')
------解决方案--------------------把@sql打印出来看一下
------解决方案--------------------不很明白你上面说的意思:
否考虑在这里的存储过程就被执行掉了,而不是把它作为文字放在
需要的后面的那个存储过程中,这个怎么处理
可以先判断删除:
if exists(select count(*) from sysobjects where name= 'procedure_name ' and type= 'p ')
drop procedure procedure_name
可能答所非问
------解决方案--------------------这样测试没有问题啊
create proc #test
as
declare @sql nvarchar(4000)
select @sql = ' '
select @sql = @sql + '
create proc #test2 as
declare @e int
select 1
select @e = @@error
select @e '
exec sp_executesql @sql
select @sql = 'exec #test2 '
exec sp_executesql @sql
#test
drop proc #test
drop proc #test2