2016-04-06 2 views
0

Netezzaで文字列を返すテスト用の単純なストアド・プロシージャを作成しました。 select文から呼び出すと、複数の列で複数回呼び出さない限り、正常に動作します。エラーが表示されます:「選択」でNetezzaストアド・プロシージャを複数回呼び出すことはできますか?

ERROR [HY000] ERROR: Can't use a stored procedure in this context.

これは許可されていませんか?

ストアドプロシージャ:

SELECT SP_TEST_PROC('abc') as test1, sp_test_proc('def') as test2 

答えて

0

ためhereを行くことができます。あなたがNetezzaのストアドプロシージャを呼び出すことができますいくつかの方法があります。

CALL SP_TEST_PROC('abc'); 
EXEC SP_TEST_PROC('abc'); 
SELECT SP_TEST_PROC('abc'); 

しかし、SELECTを使用しているときにFROM句ことはできません。 SELECTフォームは、他のフォームの1つと同義語に過ぎず、通常はSELECTとは限りません。

ストアドプロシージャhereの呼び出しに関するドキュメントがあります。

スカラー関数を探しているなら、おそらくUDFを書く方が良いでしょう。ただし、NetezzaのUDFはNZPLSQLを言語としてサポートしていません。サポートされているUDF言語(C++やLuaなど)で記述しなければなりません。

0

あなたは、このコマンドを実行する必要がありますストアドプロシージャを実行するには::私はそれを呼び出す方法

CREATE OR REPLACE PROCEDURE SP_TEST_PROC(VARCHAR(ANY)) 
RETURNS VARCHAR(32) 
EXECUTE AS OWNER 
LANGUAGE NZPLSQL AS 
BEGIN_PROC 
DECLARE 
    TEST_PAR ALIAS FOR $1; 

BEGIN 

RETURN 'A' || TEST_PAR; 

END; 
END_PROC; 

あなたがきたよう
EXECUTE SP_TEST_PROC('abc') 
EXECUTE SP_TEST_PROC('def') 

ありません書面:

SELECT SP_TEST_PROC('abc') as test1, sp_test_proc('def') as test2 

あなたがSELECTで複数のストアドプロシージャを呼び出すことはできません例

+0

"SELECT SP_TEST_PROC( 'abc')as test1」が機能します。EXECUTE文に変換するだけです – Kelly