CREATE PROCEDURE [dbo].[njyb_sjcl2]
  @tablename  varchar(100)  AS exec('insert into njrb_sjsj1(Fstatus,FServiceID) select Fstatus,FServiceID from '+@tablename +' where fmsgtype=60   ')
exec(' insert into njrb_sjsj2(Fstatus,FServiceID) select Fstatus,FServiceID from '+@tablename+' where fmsgtype=62  ')

解决方案 »

  1.   

    CREATE PROCEDURE [dbo].[njyb_sjcl2]
      @tablename  varchar(100)  AS  exec('insert into njrb_sjsj1(Fstatus,FServiceID) select Fstatus,FServiceID from '+@tablename +' where fmsgtype=60'   
      exec('insert into njrb_sjsj2(Fstatus,FServiceID) select Fstatus,FServiceID from '+@tablename+' where fmsgtype=62'    
    GO
      

  2.   

    表名,字段名为变量用动态SQL。
    exec(...)
      

  3.   

    CREATE PROCEDURE [dbo].[njyb_sjcl2]
      @tablename  varchar(100)  AS  exec('insert into njrb_sjsj1(Fstatus,FServiceID) select Fstatus,FServiceID from '+@tablename +' where fmsgtype=60'   
      exec('insert into njrb_sjsj2(Fstatus,FServiceID) select Fstatus,FServiceID from '+@tablename+' where fmsgtype=62'    
    GO
      

  4.   

    CREATE PROCEDURE [dbo].[njyb_sjcl2]
      @tablename  varchar(100) 
    AS
     Set NoCount On
      exec('insert into njrb_sjsj1(Fstatus,FServiceID) select Fstatus,FServiceID from '+@tablename +' where fmsgtype=60'   
      exec('insert into njrb_sjsj2(Fstatus,FServiceID) select Fstatus,FServiceID from '+@tablename+' where fmsgtype=62'    
     Set NoCount Off
    GO
      

  5.   

    还是和上面那个问题相关,我是用delphi和SQL连接,我用ADOCONNECTION和ADOQUERY连接SQL数据库,执行如下的存储过程,出现一个错误提示,请问是什么原因。
             tablename:='Msgtable'+inttostr(i);
             sqlstr:='exec njyb_sjcl2 '''+tablename+'''';
              with cnngp do
                begin
                  close;
                  sql.Clear;
                  sql.Add(sqlstr); 
                  execsql;
                end;
    njyb_sjcl2存储过程如下:
    CREATE PROCEDURE [dbo].[njyb_sjcl2]
      @tablename  varchar(100)
      AS
      set nocount on  exec(' insert into njrb_sjsj1(Fstatus,FServiceID) select Fstatus,FServiceID from '+@tablename+' where fmsgtype=60')   --下行信息记入njrb_sjsj1  exec(' insert into njrb_sjsj2(Fstatus,FServiceID) select Fstatus,FServiceID from '+@tablename+' where fmsgtype=62')     --上行信息记入njrb_sjsj2
    GO出现错误提示:“异类查询要求为连接设置ANSI_NULLS和ANSI_WARNINGS选项.这将确保一致的查询语义,请启用这些选项,然后重新发出查询”
      

  6.   

    CREATE PROCEDURE [dbo].[njyb_sjcl2]
      @tablename  varchar(100)  AS exec('insert into njrb_sjsj1(Fstatus,FServiceID) select Fstatus,FServiceID from '+@tablename +' where fmsgtype=60   ')
    exec(' insert into njrb_sjsj2(Fstatus,FServiceID) select Fstatus,FServiceID from '+@tablename+' where fmsgtype=62  ')
      

  7.   

    你可以直接掉DELPHI里面的存储过程功能的组件就是ADO里面的,写代码这么麻烦,这样成功率会高些
      

  8.   

    exec ('insert into tablename(fld...) select fld... from   '+@tablename+' where condition ')
      

  9.   

    CREATE PROCEDURE [dbo].[njyb_sjcl2]
      @tablename  varchar(100)  AS  exec('insert into njrb_sjsj1(Fstatus,FServiceID) select Fstatus,FServiceID from '+@tablename +' where fmsgtype=60'   
      exec('insert into njrb_sjsj2(Fstatus,FServiceID) select Fstatus,FServiceID from '+@tablename+' where fmsgtype=62'    
    GO
      

  10.   

    ljjable(吉) ,请问老兄,可以介绍一下,怎么使用吗?小弟没有用过呀
      

  11.   

    表名列名使用变量时要用批处理,其中变量用‘+   +’扩起   如'+@tablename+'