(1)
create procedure dl @a varchar(6) asexec('insert into tb (……) select (……) from tb1 where f1= '''+@a+'''')
GO……

解决方案 »

  1.   

    create procedure dl @a varchar(6) asdeclare @sql varchar(1000)
    set @sql='insert into tb (……) select (……) from tb1 where f1='''+@a+''''
    exec(@sql)
    GO
    drop proc dl/*
    命令已成功完成。
    */
      

  2.   

    Create Table tb(f1 varchar(6), f2 varchar(6))
    Create Table tb1(f1 varchar(6), f2 varchar(6))
    Insert tb1 Select 'a', 'b'
    GO
    --(1)
    create procedure dl @a varchar(6) as
    insert into tb (f1, f2) select f1, f2 from tb1 where f1=@a
    GO
    EXEC dl 'a'Select * From tb
    --Result
    /*
    f1 f2
    a b
    */
      

  3.   

    Create Table tb(f1 varchar(6), f2 varchar(6))
    Create Table tb1(f1 varchar(6), f2 varchar(6))
    Insert tb1 Select 'a', 'b'
    GO
    --(2)
    create procedure dl @a varchar(6) asdeclare @sql varchar(1000)
    set @sql='insert into tb (f1, f2) select f1, f2 from tb1 where f1='''+@a + ''''
    exec(@sql)
    GO
    EXEC dl 'a'Select * From tb
    --Result
    /*
    f1 f2
    a b
    */
      

  4.   

    create procedure dl @a varchar(6) asselect * from b where b=@aGOexec   dl 'a'drop proc dl/*
    命令已成功完成。
    */
      

  5.   

    LZ是什么运行的???你是不是:(1)
    create procedure dl @a varchar(6) as
    /******
    insert into tb (……) select (……) from tb1 where f1=@a
    GO
    是不是测试时,只运行了这个??
    ……*********/
    提示:必须声明变量@a(2)
    修改为:
    create procedure dl @a varchar(6) as
    /******
    declare @sql varchar(1000)
    set @sql='insert into tb (……) select (……) from tb1 where f1='+@a
    exec(@sql)
    GO
    是不是测试时,只运行了这个??
    ……*********/
      

  6.   

    (1)
    create procedure dl @a varchar(6) asinsert into tb (……) select (……) from tb1 where f1=@a
    这条似乎没有问题
      

  7.   

    krack2002(痴) ( ) 信誉:100    Blog   加为好友  2007-06-01 11:08:17  得分: 0  
     
     
       我试了一下 还是出那个错
      
     
    ---------
    你測試這段完整的代碼看看。Create Table tb(f1 varchar(6), f2 varchar(6))
    Create Table tb1(f1 varchar(6), f2 varchar(6))
    Insert tb1 Select 'a', 'b'
    GO
    --(1)
    create procedure dl @a varchar(6) as
    insert into tb (f1, f2) select f1, f2 from tb1 where f1=@a
    GO
    EXEC dl 'a'Select * From tb
    GO
    Delete From tb
    Drop procedure dl
    GO--(2)
    create procedure dl @a varchar(6) asdeclare @sql varchar(1000)
    set @sql='insert into tb (f1, f2) select f1, f2 from tb1 where f1='''+@a + ''''
    exec(@sql)
    GO
    EXEC dl 'a'Select * From tb
    GO
    Drop Table tb, tb1
    Drop procedure dl
    --Result
    /*
    f1 f2
    a b
    */
      

  8.   

    2)
    Create procedure dl @a varchar(6) asdeclare @sql varchar(1000)
    set @sql='insert into tb (……) select (……) from tb1 where f1='+@a
    exec(@sql)
    GO
    ----------------------------------------------------------------------
    修改这条:
    set @sql='insert into tb (……) select (……) from tb1 where f1='''+@a +''''原因:由于是字符型,所以要增加引号
      

  9.   

    我把全部贴出,大家帮我看看
    CREATE PROCEDURE dl @a varchar(6) ASif exists (select * from dbo.sysobjects where id=object_id(N'tb') and OBJECTPROPERTY(id,N'IsUserTable')=1)   
    drop table tb 
    GOCREATE TABLE tb (
    ……
    ) ON [PRIMARY]
    GOdeclare @sql varchar(1000)
    set @sql='INSERT INTO tb (……) SELECT …… FROM tb1 WHERE f1='''+@a+''''
    exec(@sql)
    GO
      

  10.   

    to happyflystone(无枪的狙击手) :按照2楼的方法试了,还出相同的错
      

  11.   

    to ljsql(沙漠,扬起你的沙砾,遮蔽太阳的光芒吧) :我是在企业管理器中  按钮检查语法 报的错
      

  12.   


    你的问题出在这里
    if exists (select * from dbo.sysobjects where id=object_id(N'tb') and OBJECTPROPERTY(id,N'IsUserTable')=1)   
    drop table tb 
    GO应该这里有GO
    所以编译器认为你的存储过程玩了
    接着执行下面的语句当然就出错了改一下:
    CREATE PROCEDURE dl @a varchar(6) ASif exists (select * from dbo.sysobjects where id=object_id(N'tb') and OBJECTPROPERTY(id,N'IsUserTable')=1)   
    drop table tb CREATE TABLE tb (
    ……
    ) ON [PRIMARY]declare @sql varchar(1000)
    set @sql='INSERT INTO tb (……) SELECT …… FROM tb1 WHERE f1='''+@a+''''
    exec(@sql)
    GO