programing

Oracle에서 개행 문자를 입력하는 방법은 무엇입니까?

goodcopy 2021. 1. 18. 22:05
반응형

Oracle에서 개행 문자를 입력하는 방법은 무엇입니까?


select col1, col2
    into name1, name2
    from table1
    where col1=col;

        m_sub := 'Subject ';
    m_msg := 'Hello '||name||' ,'||/n||/n||'Your order has been placed.';

오류 (34,33) : PLS-00103 : 다음 중 하나를 예상 할 때 "/"기호가 발생했습니다. (-+ case mod new null avg count current max min prior sql stddev sum variance execute forall merge time timestamp interval date pipe


Chr (Number) 가 작동합니다.

select 'Hello' || chr(10) ||' world' from dual

플랫폼마다 다른 줄 바꿈 문자가 필요함을 기억하십시오.

  • CHR (10) => LF, 줄 바꿈 (unix)
  • CHR (13) => CR, 캐리지 리턴 (창, LF 포함)

Oracle PLSQL 언어 정의에 따르면 문자 리터럴은 "문자 세트의 인쇄 가능한 모든 문자"를 포함 할 수 있습니다. https://docs.oracle.com/cd/A97630_01/appdev.920/a96624/02_funds.htm#2876

@Robert Love의 대답은 가독성이 좋은 코드에 대한 모범 사례를 보여 주지만 코드에 줄 바꿈 문자를 입력 할 수도 있습니다. 다음은 다음을 사용하는 Linux 터미널의 예입니다 sqlplus.

SQL> set serveroutput on
SQL> begin   
  2  dbms_output.put_line( 'hello' || chr(10) || 'world' );
  3  end;
  4  /
hello
world

PL/SQL procedure successfully completed.

SQL> begin
  2  dbms_output.put_line( 'hello
  3  world' );
  4  end;
  5  /
hello
world

PL/SQL procedure successfully completed.

CHR (NN) 함수 대신 u'\0085'내가 선호하는 유니 코드 리터럴 이스케이프 시퀀스를 사용할 수도 있습니다. 왜냐하면 우리가 더 이상 1970 년에 살지 않는다는 것을 잘 알고 있기 때문입니다. 아래의 해당 예를 참조하십시오.

SQL> begin
  2  dbms_output.put_line( 'hello' || u'\000A' || 'world' );
  3  end;
  4  /
hello
world

PL/SQL procedure successfully completed.

공정한 범위를 위해 나는 다른 운영 체제가 줄 끝 처리를 위해 다른 문자 / 문자 시퀀스를 사용한다는 점에 주목할 가치가 있다고 생각합니다. 올바른 기술을 사용하고 있는지 확인하려면 프로그램 출력을 보거나 인쇄 할 컨텍스트에 대해 생각해야합니다.

  • Microsoft Windows : CR / LF 또는 u'\000D\000A'
  • Unix (Apple MacOS 포함) : LF 또는 u'\000A'
  • IBM OS390 : NEL 또는 u'\0085'
  • HTML : '<BR>'
  • XHTML : '<br />'
  • 기타 등등.

ReferenceURL : https://stackoverflow.com/questions/5812148/how-to-enter-newline-character-in-oracle

반응형