質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

PL/SQL

PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。

Q&A

解決済

1回答

5770閲覧

sqlplus上でsql実行時にエラー

raccoondog

総合スコア77

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

PL/SQL

PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。

0グッド

0クリップ

投稿2018/11/08 05:18

sqlを作成し、sqlplusからデータベースへ接続後にsqlを実行しようとすると以下の状態になります。原因調査中となります。

※作成したSQL

create or replace trigger embulk_tr after insert on INPUT_TEST for each row declare pragma autonomous_transaction; begin dbms_output.put_line('-------------------------'); dbms_output.put_line('OracleDB to BigQuery Bulk Insert Start'); -- OracleDB to BigQuery Bulk Insert bat IF INSERTING THEN DBMS_SCHEDULER.CREATE_JOB ( JOB_NAME => 'embulk_test', JOB_TYPE => 'EXECUTABLE', JOB_ACTION => 'C:\Users\yazaki\Desktop\embulk\oracle_to_bigquery.bat'); DBMS_SCHEDULER.ENABLE('embulk_test'); END IF; dbms_output.put_line('OracleDB to BigQuery Bulk Insert End'); dbms_output.put_line('-------------------------'); end embulk_tr; exit

※sqlを実行できない状況

C:\Users\yazaki>sqlplus /nolog SQL*Plus: Release 12.2.0.1.0 Production on 木 11月 8 14:05:05 2018 Copyright (c) 1982, 2016, Oracle. All rights reserved. SQL> SQL> SQL> conn xxx/xxx 接続されました。 SQL> SQL> @C:\Users\yazaki\Desktop\embulk\oracle_to_bigquery.sql 30

ora-xxxxxなどのエラーも出力されず、ただ数字が出力されてしまいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

質問にINPUT_TEST のCREATE TABLE文を追加してください。

end embulk_tr;

の次の行に
/
を追加してください。

トリガーの中にSQLERRMの内容を表示するEXCEPTIONがあった方が良いかもしれません。

SET SERVEROUTPUT ON
INSERT INTO INPUT_TEST ...
を実行してください。

投稿2018/11/08 05:49

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

raccoondog

2018/11/08 06:30

ご回答有難うございます。 以下の通り、トリガーは作成できました。 ただ、コンパイルエラーとなりまして、なにがエラーだったのか調査方法を知りたいです。 SQL> set echo on SQL> @oracle_to_bigquery.sql SQL> create or replace trigger embulk_tr 2 after insert 3 on INPUT_TEST 4 for each row 5 declare 6 pragma autonomous_transaction; 7 8 set serveroutput on unlimited 9 10 begin 11 12 dbms_output.put_line('-------------------------'); 13 dbms_output.put_line('OracleDB to BigQuery Bulk Insert Start'); 14 15 -- OracleDB to BigQuery Bulk Insert bat 16 17 IF INSERTING THEN 18 DBMS_SCHEDULER.CREATE_JOB ( 19 JOB_NAME => 'embulk_test', 20 JOB_TYPE => 'EXECUTABLE', 21 JOB_ACTION => 'C:\Users\yazaki\Desktop\embulk\oracle_to_bigquery.bat'); 22 23 DBMS_SCHEDULER.ENABLE('embulk_test'); 24 END IF; 25 26 dbms_output.put_line('OracleDB to BigQuery Bulk Insert End'); 27 dbms_output.put_line('-------------------------'); 28 29 end embulk_tr; 30 / 警告: トリガーが作成されましたが、コンパイル・エラーがあります。 SQL>
raccoondog

2018/11/08 06:33

SQL> show errors TRIGGER EMBULK_TRのエラーです。 LINE/COL ERROR -------- ----------------------------------------------------------------- 4/18 PLS-00103: 記号"ON"が見つかりました。 次のうちの1つが入るとき: := . ( @ % ; not null range default character SQL> というエラーでした。
Orlofsky

2018/11/08 06:44

この掲示版は[質問]と[回答]以外では字下げはサポートされていませんから、質問を修正してください。 >質問にINPUT_TEST のCREATE TABLE文を追加してください。 は無視しないでください。 >set serveroutput on unlimited はsqlplusのコマンドですからCREATEの上に移動してください。
raccoondog

2018/11/08 06:53

ご指摘ありがとうございます。INPUT_TESTテーブルにつきましては事前に作成済みでして、set serveroutput onについてはsqlplusコマンドとして実行しました。再度、sql文を実行し成功致しました。ご協力有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問