各位高手,请教个问题:@SQL= insert into myTable (col1,col2) values ('aaaaa','bbbb')
exec(@SQL)
set @ID=@@IDENTITYmyTable中有自增变量,在执行完操作后数据能正常插入,为何@ID为NULL?

解决方案 »

  1.   

    create trigger test_tr on myTable
    for insert 
    select  @@IDENTITY as '@id'
      

  2.   

    set @ID=@@IDENTITY  能这样用吗?
    select id=identity(int,1,1)
      

  3.   

    我的整个存储过程是这样的:
    CREATE PROCEDURE editRecord 
    (@ID int output,
    @SQL varchar(2000)
    )
    AS
    set nocount on
    if @ID=0
         begin
    Exec(@SQL)
    set @ID=@@IDENTITY
         end
    else
         Exec(@SQL)
    if @@ERROR>0
         set @ID=0
    set nocount off
    GO
    接收的@SQL为插入语句,不知为何不能得到@ID?
      

  4.   

    不行,在查询时用identity
    select id=identity(int,1,1) into #--需要生成表
      

  5.   

    我在另一个存储过程中直接用插入语句,就可以得到
    Insert into ZJDetail (Department,Company) values (@Department,@Company)
    set @ID=@@IDENTITY不知用Exec后为什么就得不到了?
      

  6.   

    CREATE PROCEDURE editRecord 
    (@ID int output,
    @SQL varchar(2000)
    )
    AS
    set nocount on
    if @ID=0 --这里没有执行
         begin
    Exec(@SQL)
    set @ID=@@IDENTITY
         end
    else --这里执行了
         Exec(@SQL)
    if @@ERROR>0  --插入成功,这里也没有执行
         set @ID=0
    set nocount off
    GO
      

  7.   


    CREATE PROCEDURE editRecord 
    (
    @ID int output,
    @SQL varchar(2000)
    )
    AS
    set nocount onExec(@SQL)if @@ERROR=0
    set @ID=@@IDENTITY
    else
    set @ID=0set nocount off
    GO
      

  8.   

    不对,我调用的时候给@ID的初值是0,
    if @ID=0 
         begin
    Exec(@SQL)
    set @ID=@@IDENTITY
         end
    这个应该执行了
      

  9.   

    @ID int output --是输出参数,赋值了没用
      

  10.   

    原因找到了,是我调用的时候出错了,
    调用是应该是 
     myCmd.Parameters("@ID").Direction = ParameterDirection.InputOutput
    我确输成  myCmd.Parameters("@ID").Direction = ParameterDirection.Output
    了,致使@ID的值没有传进去。
    不过仍然谢谢各位,一会儿散分。