1

次のようなプログラムブロックを作成しました。

DECLARE
  recCount pls_integer:=0;
  idCounter pls_integer:=0;
BEGIN
  SELECT COUNT(value) into recCount FROM classname_ WHERE value='CONNECT_BLOG_INTERPRETER';
  SELECT MAX(classnameid)+1 into idCounter FROM classname_;
  IF recCount = 0 THEN
    INSERT INTO classname_ (classnameid, value) values (idCounter, 'CONNECT_BLOG_INTERPRETER');
    DBMS_OUTPUT.PUT_LINE('Inserting Record CONNECT_BLOG_INTERPRETER');
  ELSE
        DBMS_OUTPUT.PUT_LINE('Record CONNECT_BLOG_INTERPRETER already exists.');
  END IF;
END;

このステートメントは問題なく実行されますが、追加ステートメントを次のように実行したい場合:

select * from emp;

これにより、次のようなエラーが発生します。

Error report:
ORA-06550: line 14, column 1:
PLS-00103: Encountered the symbol "SELECT" 
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

しかし今、私はこれが一緒に働く必要があります。複数のステートメントが次々に実行される DB-Patching のケースを考えてみましょう。

私を案内してください。

4

1 に答える 1

0

私は解決策を見つけました。

で2つのステートメントを区切るだけ/です。これで問題は解決しました。

これで、最後のクエリは問題なく連携できます。

DECLARE
  recCount pls_integer:=0;
  idCounter pls_integer:=0;
BEGIN
  SELECT COUNT(value) into recCount FROM classname_ WHERE value='CONNECT_BLOG_INTERPRETER';
  SELECT MAX(classnameid)+1 into idCounter FROM classname_;
  IF recCount = 0 THEN
    INSERT INTO classname_ (classnameid, value) values (idCounter, 'CONNECT_BLOG_INTERPRETER');
    DBMS_OUTPUT.PUT_LINE('Inserting Record CONNECT_BLOG_INTERPRETER');
  ELSE
        DBMS_OUTPUT.PUT_LINE('Record CONNECT_BLOG_INTERPRETER already exists.');
  END IF;
END;

/

select * from emp;
于 2013-04-04T08:10:00.450 に答える