2009-04-28 6 views
6

내가 쓰기 :오라클이 명령에서 연속 된 개행 문자를 허용하지 않는 이유는 무엇입니까?

  • : TABLE 사람을 CREATE (
  • : 이름 CHAR (10),
  • :
  • :을 ssn INTEGER);

및 파일 "a.sql"에 저장이 (콜론은 실제 코드가 아닌, 라인의 시작을 나타냅니다.)

나는 다음 SQL에서 "@a"를 입력하여 실행하는 경우 * Plus 명령 프롬프트에서 "ssn"으로 시작하는 줄이 명령으로 인식되지 않고 무시됩니다.

내가 수집 한 것으로부터 sqlplus는 행에 여러 줄 바꿈 문자가있는 경우 명령을 종료하는 것으로 보입니다. 이것이 정확한 진술입니까? 그렇다면 누구나 이것이 필요한지/왜 이것을 선택했는지 알 수 있습니까?

답변

15

왜 그런지 모르겠지만 SQL * Plus에서 완전히 공백으로 끝나는 명령은 명령을 종료합니다. 슬래시로

  • ()

    • 세미콜론 : 당신은 세 가지 방법 중 하나를 사용하여 SQL 명령을 종료 할 수 있습니다

      the SQL*Plus docs에서

      인용구 :는 SQL 명령 종료

      (/)를 한 행에 붙이십시오.

    • 공백이있는 행
    ,

    는 또한 SET의 SQLBLANKLINES으로 처리하는 방법을 빈 줄을 변경할 수 있습니다

    SQLBL [ANKLINES] {ON | OFF}

    컨트롤의 SQL * 여부 플러스 SQL 명령 또는 스크립트 내 빈 줄을 수 있습니다. ON은 빈 줄과 새 줄을 SQL 명령이나 스크립트의 일부로 해석합니다. 기본값 인 OFF는 SQL 명령이나 스크립트 또는 스크립트에서 빈 줄이나 새 줄을 허용하지 않습니다.

    SQL 명령을 실행하지 않고 SQL 명령 항목을 중지하려면 BLOCKTERMINATOR를 입력하십시오. SQL 명령 입력을 중지하고 SQL 문을 실행하려면 SQLTERMINATOR 문자를 입력하십시오.

  • 5

    기본적으로 SQLPlus는 빈 줄을 입력하면 명령문을 종료합니다 (실행하지는 않습니다). 그것은 항상 이것을했습니다. 화면 편집기와 쿼리 도구를 사용하기 전의 일이었던 것 같습니다.

    당신은 당신이 문을 종료 (그러나 실행되지 않음) 단지 전체 정류장이있는 줄을 입력 할 거라고하는 경우

    설정 SQLBLANKLINES와 그 기본 동작을 변경할 수 있습니다.

    0

    그러나 당신이 VARCHAR2 또는 CLOB 필드에 여러 줄의 텍스트를 삽입하고자하는 경우, 당신은 이유는 위에서 설명한 작동하지 않습니다 CHR (10)

    insert into t values ('Hello,'||chr(10)||chr(10)||' How are you?'); 
    
    insert into t values (
    'Hello, 
    
    How are you'); 
    

    를 사용할 수 있습니다.

    관련 문제