4

以下のように使用したいストアド プロシージャがSELECTありますが、エラーが発生します。

ストアド プロシージャの出力は、型の列が 1 つあるテーブルです。int

select * from users where resCode in (EXEC getUserResselers 1)

-- stored procedure
create procedure getUserResselers
    @userCode int
as
    ;WITH Directories AS (SELECT  code FROM Resseler WHERE code =(select resselerCode from Users where code=@userCode)
    UNION ALL SELECT d.code FROM Resseler d INNER JOIN Directories p ON  d.parent = p.code)
        SELECT  * FROM    Directories d
4

1 に答える 1

2

ストアド プロシージャからの直接選択はサポートされていません。ただし、このタイプの操作は、次のようなテーブル値のユーザー定義関数の良い候補です。

「再販業者」のスペルが間違っていることに注意してください。既存のスキーマでテストできるように、スペルミスを残しました。

CREATE FUNCTION getUserResselers
(
    @UserCode INT
)
RETURNS TABLE AS
RETURN(
    WITH Directories AS (

       SELECT  code FROM Reseller WHERE code = (select resselerCode from Users where code=@userCode)
       UNION ALL SELECT d.code FROM Resseler d INNER JOIN Directories p ON  d.parent = p.code
    )
    SELECT  * FROM   Directories
)

次に、クエリに関数への結合を含めるか、引き続き を使用できますIN。これは次のようになります。

select * from users where resCode in (SELECT Code FROM getUserResselers(1));
于 2012-12-15T21:25:09.753 に答える