
No.3ベストアンサー
- 回答日時:
#1 です。
まず、#2 さんの回答を見てください。
ストアドにすればレスポンスが改善する、と言う認識自体
が(少なくともORACLEにおいては)疑問です。
移行処理とは、そっくりそのままを移行するのではなく、
移行先の仕様に合わせて、適材適所に最適化していく
必要があります。
以上を踏まえて、以下は想像で書きます。
MSSQLでやっていた処理で渡すSQLはSELECT文ですよね?
で、ストアドでexecしたものを、呼び出し側でADOやDAOで、
レコードセットとして受けていたものと思います。
(この手法自体はよくやりますね、MSSQLを使う時は)
結論から書くと、#1で書いた通り、ORACLEではこれは
できないんです。
PL/SQL内部で SELECT * FROM TBL; と言う文は実行
できないんです。
なので、動的カーソルにしてカーソル変数で返すとか、
配列(PL/SQL表など)で返すとか、いずれにせよ、
ストアド呼び出し側ではOUTパラメータで受ける必要が
あります。
で、さらに意地の悪い事を書きますが、ここまで苦労
しても、#2 さんも書かれている通り、レスポンス改善
には多分つながらないと思います。
パフォーマンスチューニングの観点から言えば、
*ネットワーク/ハードウェアの見直し
*DBリソースチューニング
*INDEXの見直しや統計情報の取得(効果的)
*SQL自体のチューニング(効果的)
に留めをさします。
渡すSQLが更新DMLなら executeでOKですよ。
ありがとうございました。
SQLServerで出来たのでORACLEでも可能だと思ってましたが不可能なんですね。大変ためになりました。
No.2
- 回答日時:
SQLserverで、何故レスポンスが改善するか、存じませんが..
Oracleで同じ事をやってもレスポンスの向上が図れるような気がしません。
どうしてもやってみたいと言うことであれば、不定数の結果フィールドを受け取れる
DBMS_SQLパッケージで実現できると思います。
(execute immediateは、不定カラムだとFETCHできない)
No.1
- 回答日時:
動的SQL は
9i なら execute immediate
それ以前なら dbms_sqlパッケージ
を使用します。
ただし、素のselect文は
PL/SQL内では実行できません。
詳細はマニュアルで。
なければotnで。
参考URL:http://otn.oracle.co.jp
さっそくの回答ありがとうございます。
execute immediateを使用したPL/SQLを作成して色々ためしたんですが、やはりうまく出来ませんでした。何かサンプルコードなどありませんでしょうか。ド素人のため申し訳ありません。また、SQL文自体をCHARでPL/SQLに渡して実行させたいと思っております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Oracle Oracleですがsqlで質問です。 サブクエリ内で番号というカラムで昇順の1レコード目を取得したい 3 2023/05/22 10:02
- PHP プログラムコードを入力する場合改行してもいいですか? 2 2022/10/02 16:05
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- MySQL #1062 - '0' は索引 'PRIMARY' で重複しています。とでています。 1 2023/01/01 06:13
- Access(アクセス) Access VBAで条件を追加する(書き込む)場所 2 2022/03/23 12:05
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- SQL Server AccessのInsertクエリのあとつづけてDeleteクエリを行いたいがSQLでどう書いたらいい 3 2023/05/27 14:12
- SQL Server これをSQL文で出来るでしょうか? 1 2023/03/26 02:16
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Function内に記述したdbms_outp...
-
ストアドプロシジャからストア...
-
ASPでのOracleへの接続
-
PL/SQLのファンクションでのOUT...
-
FDD,CO-ROMにアクセ...
-
PL/SQLの例外
-
PL/SQLで連結(||)と結合(=>)の違い
-
ストアド実行時のエラー「参照...
-
プロシージャ 引数 指定
-
Accessのマクロでモジュールを...
-
エクセルVBAでUserFormを起動し...
-
SQL Serverの型変換について
-
OutlookVBAで作成したマクロに...
-
Statement ignored というエラー
-
SQLで部分的にGROUP BYしたいとき
-
PL/SQLで、期間計算
-
Oracle8iで順序の値のリセット
-
PL/SQLのエラーについて
-
SQL(SELECT文)を教えてください
-
日付型カラムへのデータINSERT
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ストアドプロシジャからストア...
-
ストアド実行時のエラー「参照...
-
PL/SQL exceptionを呼び出すには?
-
時間項目を60進数から10進数へ...
-
INSERT文の書式
-
PL/SQLで連結(||)と結合(=>)の違い
-
PL/SQL 実行中のSID
-
パッケージ内のファンクション...
-
質問:DBMS_OUTPUTの使用方法
-
PL/SQLについて
-
PL/SQLの例外
-
ストアドプロシージャからアナ...
-
ストアドプロシージャ結果のフ...
-
Function内に記述したdbms_outp...
-
ROW_NUMBER()を使用したデータ取得
-
OracleのTEXT_IOについて
-
ストアドプロシージャからスト...
-
PL/SQLに関して
-
PL/SQLのファンクションでのOUT...
-
プロシージャ 引数 指定
おすすめ情報