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. spring&plsqlストアドプロシージャ - 例外処理とトランザクション
- 3. VARBINARYをストアドプロシージャに渡す
- 4. ストアドプロシージャにデータテーブルを渡す
- 5. 配列をストアドプロシージャに渡す
- 6. SSIS:ストアドプロシージャにレコードセットを渡す
- 7. ストアドプロシージャにパスを渡す方法は?
- 8. ストアドプロシージャにネットワークパスを渡す方法は?
- 9. リスト<string>をストアドプロシージャに渡す
- 10. 可変数のパラメータをストアドプロシージャに渡す
- 11. IDの配列をストアドプロシージャに渡す
- 12. VBScript:null値のパラメータをストアドプロシージャに渡す?
- 13. ストアドプロシージャに負の値を渡す
- 14. リストをTSQL 2008ストアドプロシージャに渡す
- 15. 複数の値をストアドプロシージャに渡す
- 16. T-SQLのストアドプロシージャにカラムを渡す
- 17. EFストアドプロシージャにパラメータを渡す方法は?
- 18. SQLストアドプロシージャを "order by"に渡す
- 19. データのバルク行をストアドプロシージャに渡す
- 20. plsqlの引数として列を渡す
- 21. execストアドプロシージャのパラメータを渡す方法
- 22. ストアドプロシージャに渡される動的パラメータ
- 23. oracle plsql関数へのパラメータの受け渡し
- 24. Nullable <int>をF#のストアドプロシージャに渡すには?
- 25. SQL Server - 変数をストアドプロシージャに渡すときに
- 26. forall plsqlにエラーをキャッチする方法
- 27. Oracle/PLSQLのパフォーマンス
- 28. PLSQL - Oracleのコレクション
- 29. PLSQLのリフレクション?
- 30. PyODBCを使用してストアドプロシージャにパラメータを渡す
「実行する」とはどういう意味ですか?クエリは結果を返すように設計されています。ストアドプロシージャで実行する結果を定義する必要があります。 –
こんにちはJeffrey、 私は何をしたいのですか?実行時にクエリをストアドプロシージャに渡すことです。たとえば、挿入操作を実行したいと思います。実行時に実行時に挿入クエリを実行します。 – Tehseen
クエリは常に同じ列とデータ型のセットを返しますか? –