단일 .SQL 파일에 테이블을 생성 * Plus를 만들거나 테이블에 대체 에뮬레이션 :는 BEGIN/END와 나는 오라클의 SQL과 실행하고있어 작은 SQL 스크립트를
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE symbols';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE != -942 THEN
END IF;
END;
/
CREATE TABLE symbols (
blah blah,
blah blah,
);
EXIT;
의 SQL * Plus를 명령 줄입니다 : 나는 END 후 슬래시 (/)를 생략하면
sqlplus aegsys15_owner/pass#[email protected] @createSymbolsTable.sql << EOF
> EOF
, 첫 번째 BEGIN/END 블록을 처리하는 것하고는 아래 표 섹션을 CREATE 무시합니다. 또한, 전혀 도움 아무것도 인쇄하지 않습니다 - 단지 연결/분리 :
SQL*Plus: Release 11.2.0.1.0 Production on Tue Sep 13 15:49:34 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
78 Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
을하지만, 나는 앞으로이 나에게 오류 제공 슬래시이있는 경우 : 첫째
END IF;
*
ERROR at line 6:
ORA-06550: line 6, column 5:
PLS-00103: Encountered the symbol "END" when expecting one of the following:
(begin case declare exit for goto if loop mod null pragma
raise return select update while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
continue close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe purge
CREATE TABLE symbols (
*
ERROR at line 1:
ORA-00955: name is already used by an existing object
를, 무엇이다 상단에 BEGIN/END 예외 블록과 동일한 .sql 파일에 CREATE TABLE 블록을 둘 수있는 가장 좋은 방법은 무엇입니까?
둘째, SQL * Plus에서 도움이되는 출력을 얻는 방법은 무엇입니까? 우리가 실행하는 각 .sql 파일에는 여러 CREATE 문 (테이블, 인덱스, 동의어 등)이있을 수 있습니다. 우리의 이상적인 출력은 무언가 같은 : 그런 일이 비록 SQL 또는 PL/SQL을 달성 할 경우
TABLE foo: Pass
SYNONYM bar: Fail
INDEX foo_1: Pass
확실하지 - 너희들이 더 나은 생각하면,이 주위에 Bash는 나 파이썬 래퍼 스크립트를 작성하는 행복 해결책. 당신이 당신의 if 문에 넣어 깜빡
당신은 실행 두/END를 시작하고 하나 개의 SQL 파일에 테이블을 생성하지만, 실제로 누락 된 조각 당신은 당신의 케이드 –