source

SQLPlus 스크립트를 통과하지 못한 매개 변수의 기본값

lovecheck 2023. 9. 9. 09:36
반응형

SQLPlus 스크립트를 통과하지 못한 매개 변수의 기본값

사용자 입력 없이 sqlplus 스크립트에서 parameter의 기본값을 설정할 수 있는 방법이 있습니까?

예를 들어, SQL 스크립트 세션이 있습니다.sql:

SET VERFY OFFSET TERMOUT OFF이름 = '&1' 정의
COLUMN search_unname new_value search_unname'&unname'일 때 경우 선택 = '%' ELSE UPER('&unname') END ASEAN ASEAN_unname이중에서;
종료 설정 켜기
v$session에서 sid, serial, username을(를) 선택합니다(사용자 이름은 '&search_unname').

sqlplus에서 다음과 같이 호출하고 싶습니다.

SQL> @sessions1에 대한 값 입력:
SID 시리얼# 사용자 이름---------- ---------- ------------------------------56 20577 컨텍스트.....
236열 선택.

SQL> @sessions "
SID 시리얼# 사용자 이름---------- ---------- ------------------------------56 20577 컨텍스트.....
236열 선택.

SQL> @sessions SDE
SID 시리얼# 사용자 이름---------- ---------- ------------------------------11356675 SDE165 64881 SDE.....
43열 선택.

SQL>

매개 변수를 입력하라는 요청이 있을 때만 매개 변수의 빈 값을 전달할 수 있거나, 스크립트 이름 뒤에 빈 매개 변수를 ""을 통해 전달할 수 있습니다.하지만 이런 행동은 매우 짜증납니다.IF DEFINED "&1"의 일종은 매우 유용할 것입니다.

불필요한 사용자 상호 작용 없이 sqlplus 스크립트의 WHERE 조건을 적용하기 위해 이를 달성해야 하는 팁이나 요령이 있습니까?

해결책

Martin I이 링크한 기사에 따르면, 매개 변수 값을 묻지 않고 이전 스크립트가 작동하도록 수정했습니다.

SET VERFY OFFSET TERMOUT OFF
열 1 새 값 1Rownum = 0인 듀얼에서 '''1'''을 선택합니다.이름 = '&1'을(를) 정의합니다.
종료 설정 켜기
v$session에서 sid, serial#, 사용자 이름 선택WHERE 사용자 이름 LIKE UPPER('&unname', '', '%', '&unname'));
정의가 없는 1

언제든지 사라질 수 있는 링크를 쫓고 정독하는 것을 좋아하지 않는 사람들을 위해, 여기 간단한 붙여넣기 토막글이 있습니다.

set termout on
set serveroutput on
set feedback off
set verify off

-- start
column 1 new_value 1 noprint
select '' "1" from dual where rownum = 0;
define param = &1 "default"
-- end

begin
    dbms_output.put_line ( 'Param 1 value is &param' );
end;
/

exit 0
/

실행:

$ sqlplus -s SCOT/TIGER@ORCL @a.sql
매개 변수 1 값이 기본값입니다.
$ sqlplus -s POSF/POSF@ECMDB @a.sql nondef
1 개 1이 nondef입니다 nondef수입니다.

질문에 대한 답변은 "On SQL*Plus Defines"를 참조하십시오.

견적:

SQL> COLUMN 1 NEW_VALUE 1
SQL> COLUMN 2 NEW_VALUE 2
SQL> COLUMN 3 NEW_VALUE 3
SQL> COLUMN 4 NEW_VALUE 4
SQL> SELECT '' "1", '' "2", '' "3", '' "4"
  2    FROM dual
  3   WHERE ROWNUM = 0
  4  /

no rows selected

SQL> DEFINE 1
DEFINE 1               = "1" (CHAR)
SQL> DEFINE 2
DEFINE 2               = "2" (CHAR)
SQL> DEFINE 3
DEFINE 3               = "" (CHAR)
SQL> DEFINE 4
DEFINE 4               = "" (CHAR)
SQL> 
SQL> REM ...but...
SQL> 
SQL> DEFINE 5
SP2-0135: symbol 5 is UNDEFINED

언급URL : https://stackoverflow.com/questions/13474899/default-value-for-paramteters-not-passed-sqlplus-script

반응형