[20240607]PL/SQL中sql語句的註解.txt
--//別人測試遇到的問題,重複測試說明問題.
1.環境:
SCOTT@test01p> @ ver
BANNER CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 0
$ cat m2.sql
DECLARE
l_count PLS_INTEGER;
BEGIN
FOR i IN 1..&&1
LOOP
SELECT /*+ find_me */ COUNT(*) INTO L_COUNT FROM DEPT WHERE DEPTNO=10;
END LOOP;
END;
/
2.測試1:
--//session 1:
SCOTT@test01p> set timing on
SCOTT@test01p> @ m2.sql 10000
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.47
--//session 2:
SYS@test> select sql_id ,sql_text,executions from v$sql where sql_text like '%find_me%' and executions>=1e4;
SQL_ID SQL_TEXT EXECUTIONS
------------- ------------------------------------------------------------ ----------
b744uv7rtsf8t SELECT /*+ find_me */ COUNT(*) FROM DEPT WHERE DEPTNO=10 10000
3.繼續:
$ cat m3.sql
DECLARE
l_count PLS_INTEGER;
BEGIN
FOR i IN 1..&&1
LOOP
SELECT /* find_me */ COUNT(*) INTO L_COUNT FROM DEPT WHERE DEPTNO=10;
END LOOP;
END;
/
--//僅僅註解部分沒有+加號.
--//退出會話重新整理共享池:
SYS@test> alter system flush shared_pool;
System altered.
--//session 1:
SCOTT@test01p> @ m3.sql 30000
PL/SQL procedure successfully completed.
Elapsed: 00:00:01.51
--//session 2:
SYS@test> select sql_id ,sql_text,executions from v$sql where sql_text like '%find_me%' and executions>=1e4;
no rows selected.
--//沒有發現包含find_me字串的sql語句.
--//而實際上匿名PL SQL做了特殊處理,刪除註解部分,真正執行的是:
--// SELECT COUNT(*) FROM DEPT WHERE DEPTNO=10
SYS@test> select sql_id ,sql_text,executions from v$sql where sql_id='9y1zzt1h1f3pz';
SQL_ID SQL_TEXT EXECUTIONS
------------- ------------------------------------------------------------ ----------
9y1zzt1h1f3pz SELECT COUNT(*) FROM DEPT WHERE DEPTNO=10 30000
--//簡單驗證:
--//session 1:
SCOTT@test01p> @ m3.sql 9999
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.39
--//session 2:
SYS@test> select sql_id ,sql_text,executions from v$sql where sql_id='9y1zzt1h1f3pz';
SQL_ID SQL_TEXT EXECUTIONS
------------- ------------------------------------------------------------ ----------
9y1zzt1h1f3pz SELECT COUNT(*) FROM DEPT WHERE DEPTNO=10 39999
--//如果註解部分沒有+,PL/SQL對於裡面的sql語句會作出特殊處理,取消註解,另外注意PL/SQL會格式化sql語句,這些在我以前blog提到.
[20240607]PL/SQL中sql語句的註解.txt
相關文章
- 利用pl/sql執行本地的sql檔案中的sql語句SQL
- PL/SQL 動態sql語句例SQL
- GOTO語句在PL/SQL中的應用GoSQL
- PL/SQL與DDL語句SQL
- PL/SQL 條件控制語句SQL
- PL/SQL迴圈控制語句SQL
- PL/SQL Developer中輸入SQL語句時如何自動提示欄位SQLDeveloper
- Java中如何解析SQL語句、格式化SQL語句、生成SQL語句?JavaSQL
- Oracle PL/SQL程式碼中的註釋OracleSQL
- PLSQL Language Referenc-PL/SQL靜態SQL-靜態SQL的描述-語句SQL
- sql 中的with 語句使用SQL
- 【PL/SQL】使用變數傳遞方法生成表更名的SQL語句SQL變數
- java-Mybatis 註解方式實現sql語句JavaMyBatisSQL
- Oracle SQL精妙SQL語句講解OracleSQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-FOR迴圈-FOR迴圈中的索引SQL索引
- 6.4. PL/SQL語法——6.4.5. 迴圈語句SQL
- PLSQL Language Referenc-PL/SQL控制語句-順序控制語句-NULLSQLNull
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-FOR迴圈SQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-CONTINUESQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-EXIT WHENSQL
- 自定義註解例項實現SQL語句生成SQL
- Oracle SQL精妙SQL語句講解(轉)OracleSQL
- Oracle12c中PL/SQL(DBMS_SQL)新特性之隱式語句結果OracleSQL
- PLSQL Language Referenc-PL/SQL動態SQL-本地動態SQL(EXECUTE IMMEDIATE語句)SQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-基本迴圈(EXIT語句)SQL
- PLSQL Language Reference-PL/SQL語言基礎-表示式-PL/SQL表示式中的SQL函式SQL函式
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-WHILE迴圈SQLWhile
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-CONTINUE WHENSQL
- PLSQL Language Referenc-PL/SQL控制語句-條件選擇語句-IF THEN ELSeIFSQL
- PLSQL Language Referenc-PL/SQL控制語句-條件選擇語句-IF THEN ELSESQL
- PLSQL Language Referenc-4PL/SQL控制語句-條件選擇語句-IF THENSQL
- [20150403]修正sql語句.txtSQL
- SQL中CASE語句強大功能詳解SQL
- sql的聯結語句詳解SQL
- SQL語句SQL
- 【SQL】10 SQL UPDATE 語句SQL
- 【SQL】11 SQL DELETE 語句SQLdelete
- sql server 中的一些實用的sql語句SQLServer