SQLクエリ全体をレキシカルパラメータとしてストアドプロシージャに渡してから実行します。どのようにそれを行うための任意の提案?PL/SQL:レキシカルパラメータをストアドプロシージャに渡す
答えて
あなたはこの試みることがありますが、DMLとは対照的に、クエリ([挿入、更新を実行したい場合はhttp://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/dynamic.htm#CHDGJEGD
アレックスに感謝、これは本当に役に立ちます。 – Tehseen
これを行う別の方法がないと非常に、非常に、非常に確信していますか?未知のSQLを実行することは非常に危険なことがあります。攻撃者は、これを見つけた場合、基本的にデータベースに何かを行うことができます。 –
あなたがしようとしていることはほとんど間違った方法です。
Execute Immediate
は、a)セキュリティリスクがあり、b)多くの異なるSQL文がそのように実行された場合にパフォーマンスに悪影響を及ぼすことがあるため、注意が必要です。
ただし、execute immediate
を使用してレコードを挿入する方法については、hereを参照してください。バインド変数を使用することが不可欠であることに注意してください。
:ここ
create or replace procedure my_proc(pstring IN varchar2)
is
begin
if length(pstring)>0 then
EXECUTE IMMEDIATE pstring;
end if;
end my_proc;
がダイナミックPLSQLの公式Oracleのドキュメントです
function get_dataset (p_sql_query in varchar2) return sys_refcursor
as
l_returnvalue sys_refcursor;
begin
open l_returnvalue for p_sql_query;
return l_returnvalue;
end get_dataset;
は、戻り値はTY「弱いです、削除]またはコードのPL/SQLブロック)が、あなたはこのような何かを行うことができます「REF CURSOR」を押します。
呼び出しプログラム、関数の結果を処理し、カーソルをクローズする必要があります(それが何であれのJava、.NET、PL/SQL、あるかどうか)。
Thanx ObiWanKenobi、これは便利です。 – Tehseen
- 1. sysrefcursorを返すPLSQLストアドプロシージャ
- 2. PLSQLローカルコレクションをパイプライン関数に渡す
- 3. spring&plsqlストアドプロシージャ - 例外処理とトランザクション
- 4. ストアドプロシージャにデータテーブルを渡す
- 5. 配列をストアドプロシージャに渡す
- 6. SSIS:ストアドプロシージャにレコードセットを渡す
- 7. VARBINARYをストアドプロシージャに渡す
- 8. SQLストアドプロシージャにパラメータを渡すには?
- 9. cx_Oracle複合/複合配列をPLSQLプロシージャに渡す方法は?
- 10. ストアドプロシージャから別のストアドプロシージャにテーブル変数を渡します。
- 11. 可変数のパラメータをストアドプロシージャに渡す
- 12. ストアドプロシージャに負の値を渡す
- 13. ストアドプロシージャにデータベース名を渡す方法
- 14. SET変数をストアドプロシージャに渡す
- 15. RODBC:ストアドプロシージャにnull値を渡す
- 16. リストをTSQL 2008ストアドプロシージャに渡す
- 17. データのバルク行をストアドプロシージャに渡す
- 18. ASP.NET WinFormからストアドプロシージャにパラメータを渡す
- 19. XMLをノード内のストアドプロシージャに渡す
- 20. 複数のパラメータをストアドプロシージャに渡す
- 21. IDの配列をストアドプロシージャに渡す
- 22. T-SQLのストアドプロシージャにカラムを渡す
- 23. ストアドプロシージャにネットワークパスを渡す方法は?
- 24. SQLストアドプロシージャを "order by"に渡す
- 25. null可能なGUIDをストアドプロシージャに渡す
- 26. MSアクセスのストアドプロシージャにレコードセットを渡す
- 27. データフレームの内容をSQLストアドプロシージャに渡す
- 28. SQLストアドプロシージャByRefに変数を渡す?
- 29. リスト<string>をストアドプロシージャに渡す
- 30. 複数の値をストアドプロシージャに渡す
「実行する」とはどういう意味ですか?クエリは結果を返すように設計されています。ストアドプロシージャで実行する結果を定義する必要があります。 –
こんにちはJeffrey、 私は何をしたいのですか?実行時にクエリをストアドプロシージャに渡すことです。たとえば、挿入操作を実行したいと思います。実行時に実行時に挿入クエリを実行します。 – Tehseen
クエリは常に同じ列とデータ型のセットを返しますか? –