• 締切済み

db2 v9.7にて

db2 v9.7にて CLPPLUS上で、PL/SQLブロックを実行したところ、エラーが出ました。 SQL> DECLARE i integer := 0; BEGIN while i < 100001 loop insert into test1 values(i,i,i); i := i + 1; end loop; END; / 行 1 の近くでエラー: SQL0104N An unexpected token "DECLARE i integer := 0" was found following "". Expected tokens may include: "BEGIN-OF-STATEMENT". SQL> DB2アニュアル http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp ------ PL/SQL (Procedural Language/Structured Query Language) ステートメントを、DB2® のインターフェースを使用してコンパイルおよび実行できます。このサポートにより、既存の PL/SQL ソリューションを DB2 データ・サーバーで処理できるように準備するという煩雑な作業が軽減されます。 以下のインターフェースがサポートされます。 ?DB2 コマンド行プロセッサー (CLP) ?DB2 CLPPlus ?IBM® Data Studio ?IBM OptimTM Development Studio デフォルトでは、これらのインターフェースから PL/SQL ステートメントを実行できません。DB2 データ・サーバーで、PL/SQL ステートメント実行のサポートを使用可能にする必要があります。 ------ 上記、マニュアルの通り、PL/SQLステートメント実行のためには、 DB2サーバで何かしらの設定が必要なのでしょうか。 必要な設定をご教示いただきたく。 お願いいたします。

みんなの回答

  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.1

DB2はここ10年くらい触っていないので、ご質問のような機能も初耳でしたが、面白い機能なのでちょっと調べてみました。 >上記、マニュアルの通り、PL/SQLステートメント実行のためには、DB2サーバで何かしらの設定が必要なのでしょうか。 以下の設定が必要なようですが、設定されているでしょうか? Oracle アプリケーションを使用可能にするための DB2 のセットアップ http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=/com.ibm.db2.luw.apdv.porting.doc/doc/t0054729.html DB2_COMPATIBILITY_VECTOR レジストリー変数 http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=/com.ibm.db2.luw.apdv.porting.doc/doc/r0052867.html 上記、設定されているのであれば、申し訳ありませんが、今のところ自分にわかるのもここまでです。

kota_kota
質問者

お礼

ありがとうございました

関連するQ&A

  • DBの削除とインポート

    初心者ですが、よろしくお願いいたします。 Win2000 Serverで、Oracle8i Workgroup Serverを使用していますが、今使用しているDBを削除し、まるまるエクスポートしたDBをインポートするのですが、 【削除】 1.『Database Configuration Assistant』の『データベースの削除』を使用すればよいのでしょうか? 2.上記方法で、Oracle8i自体が削除されることはないでしょうか? 3.SQL*PLUSにて削除はできるでしょうか? 又、もしできるようであれば、どのようなステートメントで、何を削除すればよいでしょうか? 【インポート】 1.インポートは、どのようにすればよいでしょうか? 2.SQL*PLUSを使用してのインポートと、他の何かを使用したときの方法と、そのメリット・デメリット教えていただければ幸いです。 よろしくお願いいたします。

  • DB2のエラーの回避方法を知っている方教えていただけますか?

    「 SQL30040N 後続のコマンドまたは SQL ステートメントの正常な実行に影響を与えない使用不能リソースのために、実行が失敗しました。理由 "0x200002D"、リソース・タイプ "MEMORY"、リソース名 "DRDA HEAP"、製品 ID "SQL07029 "。 SQLSTATE=57012 」 このようなエラーメッセージが出て困っています。 回避方法を知っている方教えてもらえないでしょうか? 環境は サーバー OS :Windows Nt4.0 SP6 DB2:Ver7 Fix13 クライアント(1) OS :Windows2000 SP4 DB2:Ver8 Fix7 クライアント(2) OS :Windows2000 SP4 DB2:Ver8 Fix4 開発言語:VB6.0 Sp5 接続方法:ADO Microsoft Data EnvironmentでCommandを使用 クライアントのFixを当てる前までは、このメッセージが出ていなかったのですが、ほかのエラー回避のためにFixを当てたところ今度このエラーが出るようになってしまいました。 IBM等で調べたのですが具体的な解決策がなく投稿しました。よろしくお願いします。

  • db2 create functionでエラー

    aix version5 + db2 version9.5.5 の環境でUDFを作成しようとDDLを実行したところ、 以下のエラーがでて作成できませんでした。 db2 9.7 では同じDDLで作成できました。 どうやらcursorの定義に問題がありそうなのですが、 9.5では以下のcursor定義はできないものなのでしょうか? よろしくお願いします。 --エラー内容-------------------------- DB21034E コマンドが、有効なコマンド行プロセッサー・コマンドでないため、 SQL ステートメントとして処理されました。 SQL 処理中に、そのコマンドが返されました。 SQL0104N "GentaniMeisai CURSOR" に続いて予期しないトークン "FOR" が見つかりました。予期されたトークンに "<SQL_variable_condition_declaration>" が含まれている可能性があります。 LINE NUMBER=15. SQLSTATE=42601 --DDLの中身(一部)------------- DECLARE curGentaniMeisai CURSOR FOR SELECT aaa FROM bbb WHERE ccc = [変数] ;

  • ストアドプロシージャで別DBに接続

    Oracleのマテリアライズドビューのデータを SQL Server 2008のDBに毎晩取り込む処理を作る必要があり、方法を検討中です。 SQL Serverが稼働しているWindows Server 2003のマシンから、 毎晩タスクで起動させて実行することを考えています。 SQL Serverのストアドプロシージャで実現できないかと考えているのですが、 ストアドプロシージャだけで実現可能でしょうか? Oracleに接続してビューのデータを取得し、それに基づいて、 SQL ServerのDB内のテーブルのデータ追加、更新、削除等を行います。 単純なコピーではなく、データ加工や変換等の処理も行います。 経験がないので、実現可能かというところから教えて下さい。 実現不可能なら、他にどのような選択肢があるか教えていただけると助かります。 よろしくお願いします。

  • 外部サーバにあるDBへのアクセス

    SQLサーバにあるDBから他のサーバにあるDBに対してアクセスを行い 、DB同士のデータの同期を取りたいのですが、どのようにすればDB同士で同期を取ることができますでしょうか? よろしくお願いします。

  • DBの実行計画って?

    先日、開発者求人の面接に行ってきました。 顧客のDBを解析、DBの検索機能を最適化して、パッケージで納品・・・というようなことを行う企業なのですが、 そこで「DBの実行計画にはどんな種類がありますか?」という質問を受けました。 (え?DBの実行計画の種類? SQL実行する前にEXPLAINとか、で実行計画見て、コストが低くなるように 色々やったことはあるけど、実行計画の種類って?) という感じで何を聞かれているのか見当が付かず、答えられませんでした。 分かる方、教えてください! 何を聞かれたのでしょう? また、なんと答えればよかったのでしょう? ※ちなみに、その企業の扱っているDBはOracle,postgres,SQL server 等  顧客に合わせて何でも扱うみたいです。

  • PL/SQLをWindowsのBATファイルで実行するには

    いつも参考にさせていただいております。 表題のとおり、WindowsServer2003上でBATファイルを起動したいのですが、うまくいきません。 BATファイルの中身 sqlplus USER_A/USER_A @DB_A @SQLPAT sqlplus USER_B/USER_B @DB_B @SQLPAT SQLPATファイルは、大体以下の感じで、2つのスキーマーで同じPL/SQLを実行します。 Declare ・ カーソルループ 更新 ・ ・ END; タスクにBATファイルを登録し実行すると 最初のPL/SQLは実行されますが、次のUSER_Bが実行されません。 どなたか詳しい方ご教授をお願いできませんでしょうか? オラクルのVerは9iです。よろしくお願い致します。

  • ストアドプロシージャの引数にフィールド名を指定したい

    以下のようにストアドプロシージャを作成し、 ------------------------------------------------------------ CREATE FUNCTION test(integer) RETURNS integer AS'  DECLARE   aaa ALIAS FOR $1;  BEGIN   IF aaa BETWEEN 1 AND 5 THEN    RETURN 5;   ELSIF aaa BETWEEN 6 AND 10 THEN    RETURN 10;   ELSIF aaa BETWEEN 11 AND 15 THEN    RETURN 15;   END IF;  END;' LANGUAGE 'plpgsql'; ------------------------------------------------------------ 以下のようなSQL構文でこのプロシージャを使用したいと思っています。 ------------------------------------------------------------ select test(フィールド名) from テーブル名; ※「フィールド名」のフィールドにはinteger型のデータが入っています。 ------------------------------------------------------------ が、このSQLを実行すると以下のようなエラーが出ます。(CSE使用) ------------------------------------------------------------ WARNING: Error occurred while executing PL/pgSQL function test WARNING: at END of toplevel PL block WARNING: Error occurred while executing PL/pgSQL function test WARNING: at END of toplevel PL block SQL実行中に以下のエラーが発生しました。 WARNING: at END of toplevel PL block ------------------------------------------------------------ このように、ストアドプロシージャの引数にフィールド名を指定することはできないのでしょうか。 どなたかご教示ください。

  • SQL Server上のDBにWin7でアクセス

    SQL Server上のDBに、Win7のクライアントPCからSELECTのみ実行できるツールを探しています。(INSERT、DELETE、UPDATEは実行できないものがいいです。また、DBを直接編集もできては困ります) フリーソフトがベストです。どなたか、ご教授頂けますでしょうか。

  • DBへの登録エラー?

    サーバー(XP SP3/IIS5.1/SQL SEVRER2006R2)へクライアントから DB(SQL SERVER)へデータを登録しようとしたところ 「基礎になる接続が閉じられました。受信時に予期しないエラーが発生しました。」 と出てしまいます。 何が原因で発生するのですか SQL SERVERの設定? IISの設定? XPの設定? よろしくお願いします。