CREATE PROCEDURE sp_test  @a char(10)  AS
 select * into @a  from bjd
 select * from @a
GO
這個存儲過程無法通過,
我想在程序中把臨時表名以一個變量的形式傳入進去,
應該怎麼做。

解决方案 »

  1.   

    create procedure sp_test @a table as
      

  2.   

    好像通不過呀!!!!
    1。報tabel附近的語法有錯誤
    2。就算通過了,那我在delphi當中應該如果定義它的變量,也就是如何傳入它的值,
    (字符串變量行嗎)。
      

  3.   

    CREATE PROCEDURE sp_test  @a char(10)  AS
    exec('select * into '+ @a+'  from bjd')
    exec('select * from '+ @a)
    GO
      

  4.   

    在多用戶的情況下面,我想用臨時表處理數據,為了不讓表名重復所以打算把電腦的名稱做為表名
    這就是說表名是動態改變的。
    所以就想把表名以一下變量的形勢傳送給存儲過程。
    yzf111(ying) 老兄的方法還是不行,存儲過程說無效的表名稱。
      

  5.   

    yzf111(ying)的方法不行,我刚试了。临时表在第一句EXEC时被创建,但也在第一句EXEC执行完后被销毁了
        一个“#”开头的是局部临时表,楼主根本不需要为这种临时表设置不同的名字,正如我们写函数或过程时不需要为不同的使用者而设定不同的变量名。干脆直接这样:
    CREATE PROCEDURE sp_test  AS
     select * into #tmp  from bjd
     select * from #tmp
    GO
      

  6.   

    zzhuz(大件)說得沒錯!!!!可能不應該想得太多了
    結了吧。
      

  7.   

    请问楼主想要做什么,下面的语句不知对你可有用
    CREATE PROCEDURE sp_test  AS
    exec('select * from (select top 1 *  from aa)  derivedtbl')
    GO
    也就是把你上面的两名合成一句