2017-02-02 10 views
0

データベースに格納されているクエリを取得して、パラメータを指定して実行し、その結果を処理しようとしています。動的PL/SQLクエリからのデータの返却

DECLARE 
    SQLSTR VARCHAR(5000); 
BEGIN 
SELECT SelectString INTO SQLSTR FROM MySelectTable WHERE Name = 'QueryOfDoom'; 
EXECUTE IMMEDIATE SQLSTR USING 1; 
END; 

クエリは実行されますが、何も返されません。私はここで検索し、あなたがブロックからデータを返すことができないことを発見しました。それはいいです。しかし、どのようにデータを取り出すことができますか?動的なので、データを大量に収集してから選択するためにテーブル構造を定義しなければならないと、面倒です。簡単な方法はありますか?

+0

どのようにデータが消費されるかによって異なります。それがアプリケーションの場合は、参照カーソルを返すのが一般的で、アプリケーションはそのカーソルから読み取ることができます。それが別のPL/SQLプロセスである場合、そのプロセスは返されるデータの正確なタイプをほぼ確実に知るべきです。 PL/SQLオブジェクトに "any"入力を受け入れて処理させることはまれです。それはできますが、通常は醜いです。 –

答えて

1

この方法で使用する必要があります。バインドするものが見つからないので、PLSQLを実行する方法はusing句を使用できません。

DECLARE 
    SQL1 VARCHAR(5000); 
    SQLSTR VARCHAR(5000); 
BEGIN 
sql1:= 'SELECT SelectString FROM MySelectTable WHERE Name = :QueryOfDoom'; 

EXECUTE IMMEDIATE SQL1 into SQLSTR USING 1; 
END; 
関連する問題