1.有如下代碼, 看的不是很明白,請教下:
代碼如下:
SET TERM ON ECHO OFF;
PRO
PRO Parameter 1:
PRO Oracle Pack License (Tuning, Diagnostics or None) [T|D|N] (required)
PRO
DEF input_license = '^1';
PRO
SET TERM OFF;
COL license NEW_V license FOR A1;
SELECT UPPER(SUBSTR(TRIM('^^input_license.'), 1, 1)) license FROM DUAL;
VAR license CHAR(1);
EXEC :license := '^^license.';
COL unique_id NEW_V unique_id FOR A15;
SELECT TO_CHAR(SYSDATE, 'YYYYMMDD_HH24MISS') unique_id FROM DUAL;
SET TERM ON;
WHENEVER SQLERROR EXIT SQL.SQLCODE;
BEGIN
IF '^^license.' IS NULL OR '^^license.' NOT IN ('T', 'D', 'N') THEN
RAISE_APPLICATION_ERROR(-20100, 'Oracle Pack License (Tuning, Diagnostics or None) must be specified as "T" or "D" or "N".');
END IF;
END;
/
WHENEVER SQLERROR CONTINUE;
PRO
PRO Parameter 2:
PRO SQL_ID of the SQL to be analyzed (required)
PRO
DEF input_sql_id = '^2';
DEF input_parameter = '^^input_sql_id.';
PRO
PRO Values passed:
PRO ~~~~~~~~~~~~~
PRO License: "^^input_license."
PRO SQL_ID : "^^input_sql_id."
PRO
--SET TERM OFF;
-- get dbid
COL dbid NEW_V dbid;
SELECT dbid FROM v$database;
COL sql_id NEW_V sql_id FOR A13;
SELECT sql_id
FROM gv$sqlarea
WHERE sql_id = TRIM('^^input_sql_id.')
UNION
SELECT sql_id
FROM dba_hist_sqltext
WHERE :license IN ('T', 'D')
AND dbid = ^^dbid.
AND sql_id = TRIM('^^input_sql_id.');
VAR sql_id VARCHAR2(13);
EXEC :sql_id := '^^sql_id.';
SET TERM ON;
WHENEVER SQLERROR EXIT SQL.SQLCODE;
BEGIN
IF '^^sql_id.' IS NULL THEN
IF :license IN ('T', 'D') THEN
RAISE_APPLICATION_ERROR(-20200, 'SQL_ID "^^input_sql_id." not found in memory nor in AWR.');
ELSE
RAISE_APPLICATION_ERROR(-20200, 'SQL_ID "^^input_sql_id." not found in memory.');
END IF;
END IF;
END;
/
WHENEVER SQLERROR CONTINUE;
SET ECHO ON TIMI ON;
問題如下:
問題1:
DEF input_license = '^1';
^1是代表什么意思,這個一個值,還是提示輸出。
問題2:
COL license NEW_V license FOR A1;
SELECT UPPER(SUBSTR(TRIM('^^input_license.'), 1, 1)) license FROM DUAL;
'^^input_license.' 是什么意思,為何要2個^?
謝謝大家。
uj5u.com熱心網友回復:
DEF input_license = '^1';就是定義了 一個變數,變數名是 input_license , 同時給他賦了一個值是 '^1';
uj5u.com熱心網友回復:
1、DEF input_license = '^1'; 一個賦值陳述句,把 '^1' 這個值賦給input_license 這個變數2、SELECT UPPER(SUBSTR(TRIM('^^input_license.'), 1, 1)) license FROM DUAL;
'^^input_license.' 這是一個常量值,和123,abc,一樣,就是一個常量。
如果想參考input_license這個變數,也應該是 SELECT UPPER(SUBSTR(TRIM('&input_license'), 1, 2)) license FROM DUAL;
uj5u.com熱心網友回復:
另外這段sql 開頭有如下陳述句:SET DEF ^ TERM OFF ECHO ON VER OFF SERVEROUT ON SIZE 1000000;
我想問下:如下陳述句
SET DEF ^ TERM OFF
是做什么用的?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/94894.html
標籤:開發
