2014-11-05 1 views
1

sqlplus에 @ 표기법이있는 문자열을 삽입하고 싶지만 sqlplus는 .sql 파일을 열려고하는 것처럼 문자열을 읽습니다. 거기에서 sqlplus를 막을 수있는 방법이 있습니까?문자열에서 표기법 @을 사용하는 SQLPlus

set define off; 
DECLARE 
    test CLOB 
     := q'[ 

@font-face 
    {font-family:Wingdings; 
    panose-1:5 0 0 0 0 0 0 0 0 0;} 
@font-face 
    {font-family:"Cambria Math"; 
    panose-1:2 4 5 3 5 4 6 3 2 4;} 
@font-face 
    {font-family:Calibri; 
    panose-1:2 15 5 2 2 2 4 3 2 4;} 
@font-face 
    {font-family:Tahoma; 
    panose-1:2 11 6 4 3 5 4 4 2 4;} 
/* Style Definitions */ ]' ; 


BEGIN 

INSERT INTO SOME_TABLE 
VALUES(test) 


END; 
/
+0

있습니까? 그런 식으로 시작 명령을 무시합니다. 그런 다음 제한을 다시 기본값으로 설정 하시겠습니까? – jay

답변

-1

중고 오라클 견적 운영자 @ 삽입합니다 : 스크립트를 통해 레벨 3에 제한 레벨을 변경할 수있는 방법이 q'[""]

0

당신은 SQL 변수를 사용할 수 있습니다.

당신의
variable var VARCHAR(20); 
SQL> select "@!$$" into :var from dual; 

SQL> select * 
    2 from some_table 
    3 where some_table_name = :var; 

: var에 당신이

insert into some_table values (':var {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4;}') 
+0

코드를 업데이트했습니다. 하나의 스크립트에서이 모든 작업을 수행 할 수있는 무언가가 필요합니다. 원본 텍스트를 수정할 필요없이 – jay

0

흥미로운 삽입 할 문자열을 만들 수 있습니다,이 SQLPLUS에서 문제 (SQL의 *이 플러스하지 않습니다 11.2.0.1.0 생산 릴리스) :

SQL> set escape '\'; 
SQL> insert into tmp1 values ('\@456'); 

1 row created. 
: 당신은 이스케이프 문자를 설정할 수 있습니다
SQL> set serveroutput on 
SQL> create table tmp1(x varchar2(100)); 

Table created. 

SQL> insert into tmp1 values ('@font-face {font-family:"Cambria Math"; panose-1: 
2 4 5 3 5 4 6 3 2 4;}'); 

1 row created. 

이 456

+0

필자는 코드를보다 정확한 샘플로 업데이트했습니다. 하나의 스크립트에서이 모든 작업을 수행 할 수있는 무언가가 필요합니다. 그것을 수정하지 않고도 원래의 텍스트 – jay

+0

@tbone - SQLPlus에는 이상한 파싱 문제가 있습니다. 예를 들어 줄에 "/"문자 만 사용하여 문자열을 만들면 익명 블록이 손상됩니다. 그러나이 정확한 문제를 재현 할 수는 없습니다. Jeff - SQL * Plus 및 OS 버전을 포함 할 수 있습니까? 플랫폼 별 버그 일 수 있습니다. –

+0

sqlplus 10.2.0.1.0 및 win 8.1. 어느 버전을 실행 중인지. – jay