web-dev-qa-db-ja.com

ドットのみのPL / SQLスクリプト行...ドットの目的/機能は何ですか?

私の会社で働いていた以前のdbaからpl/sqlスクリプトを継承しました。失敗した分散トランザクションを「クリーンアップ」するために使用されます。このスクリプトは、ドット「。」のみを含む1行を除いて、理解するのに十分簡単です。私はこれを見たことがありません...点線の目的/機能は何ですか?

set define on
set scan on
set verify off
set serveroutput on

undefine IncidentNumber

spool &&IncidentNumber

connect / as sysdba
whenever sqlerror continue
set serveroutput on size 1000000
set linesize 200
DECLARE
   /* &&IncidentNumber */
   pragma autonomous_transaction;
   l_sql_statement       VARCHAR2(255);
   l_fdist_found         BOOLEAN := FALSE;
   --
   CURSOR cfdist IS
     SELECT local_tran_id tranid, upper(state) state
     FROM dba_2pc_pending;
   --
   BEGIN
      --
      FOR rfdist IN cfdist LOOP
          l_fdist_found := TRUE;
          if rfdist.state = 'PREPARED' then
              l_sql_statement := 'ROLLBACK FORCE '''||rfdist.tranid||''''||'/*&&IncidentNumber*/';
              DBMS_OUTPUT.PUT_LINE(l_sql_statement);
              EXECUTE IMMEDIATE l_sql_statement;
              COMMIT;
          end if;
          DBMS_OUTPUT.PUT_LINE('Executing DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('||rfdist.tranid||')');
          DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY(rfdist.tranid)/*&&IncidentNumber*/;
          COMMIT;
          IF l_fdist_found = TRUE THEN
              DBMS_OUTPUT.PUT_LINE('Rolled back distributed transaction id '|| rfdist.tranid);
          END IF;
      END LOOP;
      --
      IF l_fdist_found = FALSE THEN
          DBMS_OUTPUT.PUT_LINE('No failed distributed transactions were found.');
      END IF;
      --
     EXCEPTION
       WHEN OTHERS THEN
           RAISE_APPLICATION_ERROR(-20001, 'Error:'||SQLCODE||':'||SQLERRM);
   END;
.
/
1
James

ドット「。」のみの行は、入力を終了し、実行せずにバッファに保存するSQL * Plusコマンドのようです。

SQL>
SQL>
SQL> DECLARE
  2     qty1 number;
  3  BEGIN
  4     select count(*) into qty1 from dba_roles;
  5     dbms_output.put_line('Number of roles: '||to_char(qty1));
  6  END;
  7  .
SQL>
SQL>
SQL> LIST
  1  DECLARE
  2     qty1 number;
  3  BEGIN
  4     select count(*) into qty1 from dba_roles;
  5     dbms_output.put_line('Number of roles: '||to_char(qty1));
  6* END;
SQL>
SQL>
SQL>
SQL>
SQL>
SQL> DECLARE
  2     qty2 number;
  3  BEGIN
  4     select count(*) into qty2 from dba_procedures;
  5     dbms_output.put_line('Number of procedures: '||to_char(qty2));
  6  END;
  7  .
SQL>
SQL>
SQL>
SQL> LIST
  1  DECLARE
  2     qty2 number;
  3  BEGIN
  4     select count(*) into qty2 from dba_procedures;
  5     dbms_output.put_line('Number of procedures: '||to_char(qty2));
  6* END;
SQL>
SQL>
SQL>
SQL> /
Number of procedures: 26744

PL/SQL procedure successfully completed.

SQL>
SQL>
3
James