0

別のテーブルから情報を取得してグローバル一時テーブル (global_temp_tableB) に挿入するために、以下のストアド プロシージャを SQL データベースのパッケージ (retrieve_user) の下に作成しました。

procedure Load_BTable (NumID IN NUMBER) AS

begin

insert into global_temp_tableB (name, age, address, country, year)
select name, age, address, country, year
from table(prepare_tableB.find_User(NumID));

commit;

end Load_LFTable;

しかし、次を使用してSQLウィンドウからプロシージャをテストして呼び出そうとしたとき:

begin

  retrieve_user.Load_BTable(numid => 739);

end;

global_temp_tableB はまだ空ですが、ストアド プロシージャを呼び出す代わりに実際の INSERT ステートメントを使用すると、次のようになります。

begin

  insert into global_temp_tableB (name, age, address, country, year)
select name, age, address, country, year
from table(prepare_tableB.find_User(739));

end;

希望する結果を返すことができます。したがって、ストアド プロシージャの INSERT ステートメントは機能していると思います。

しかし、ストアド プロシージャを呼び出したときに、目的の結果が返されないのはなぜでしょうか。

いつもご愛顧いただき、誠にありがとうございます。

4

1 に答える 1

0
IF OBJECT_ID(N'Load_BTable',N'P') IS NOT NULL
    DROP PROCEDURE Load_BTable
GO
CREATE PROCEDURE Load_BTable
(
    @NumID      INT
)
WITH ENCRYPTION
AS
BEGIN
SET NOCOUNT ON          

insert into global_temp_tableB (name, age, address, country, year)
select name, age, address, country, year
from prepare_tableB WHERE NumId=>@NumID

SET NOCOUNT OFF
END
GO

そしてこれを試してください

exec Load_BTable 739
于 2013-07-29T12:17:10.027 に答える