select  aa,bb,qq from ............openquery('mylink','exec myproc')
参考前面已经解决的,从存储过程返回记录集的问题.

解决方案 »

  1.   

    那就不要用存储过程,用返回表变量的function吧。
    比如
    CREATE FUNCTION test ()
    RETURNS TABLE
    AS
    RETURN (select aa,bb from table1)然后用select aa,bb,qq from test() t1 join othertable on t1.cc=othertable.cc
      

  2.   

    OpenVMS(半知半解) 的方法也可以,不过用之前要用sp_addlinkedserver 加个链接服务器。用自定义function在语法上有些限制,有些语法不能用。所以你视情况决定吧。
      

  3.   

    我這個存貯過程里面有較多的計算,而且要好些地方用到它的返回值,就是那里的bb
    所以我就把它做成相當於我們通常說的函數那种形式(這里是存貯過程),要用的時候就調用它TO:OpenVMS(半知半解) (  )
    你說的方法是這樣的吧(對我這個問題來說)
    select  aa,bb,qq from table2 a inner join openquery('mylink','exec myproc') b on a.aa=b.aa
      

  4.   

    TO:icevi(按钮工厂) 
    你說的那种方法可能對我不實用,因為我想把我那table1放在數據庫里,而不是程序里,
    "sp_addlinkedserver 加个链接服务器。"
    這怎麼用,我沒用過,是在vb里用conn.execute(sp_addlinkedserver 加个链接服务器。)嗎??再者我想到用視圖是不是會更合適
      

  5.   

    "我想把我那table1放在數據庫里,而不是程序里,"是什么意思?
    我说的自定义函数是在数据库里创建的。sp_addlinkedserver 的用法看MSSQL的帮助好了。还有你是MSSQL2000吗?若不是,是不能用自定义函数的。你干脆把你的存储过程代码贴上来,我们看看怎么做好些。
      

  6.   

    我的是 mssql2000,"我想把我那table1放在數據庫里,而不是程序里,"是什么意思?
    我说的自定义函数是在数据库里创建的。
    ---我沒聽過自定義函數,以為你說的操作在程序里實現,所以有些一問我的存儲過程還沒寫好,大概做法是:
    1.取得生產數量
    2.計算出還未生產完的數量
    3.計算出要生產天數
    4.計算出每個生產的時間段
    5.返回一個記錄集:aa(生產線),bb(起始生產日)
    6.把上面返回的記錄集當一個表,與其它數據表關聯,產生所需要的記錄集以備各种需要
      

  7.   

    若SP不複雜,則用UDF.若是極其複雜,則先把SP的結果存到#temp table 中,然後再SELECT FROM temp table,這樣不好嗎