本文内容
- remove_constants 函数
- 测试环境
- 测试共享池中是否存在绑定变量的 SQL
remove_constants 函数
确定系统中是否存在绑定变量的情况,ASKTOM 网站提供了一个 remove_constants 函数,以检查共享池中 SQL 的运行情况。
IN VARCHAR2)
2 RETURN VARCHAR2
3 AS
4 l_query LONG;
5 l_char VARCHAR2 (2);
6 l_in_quotes BOOLEAN DEFAULT FALSE;
7 BEGIN
8 FOR i IN 1 .. LENGTH (p_query)
9 LOOP
10 l_char := SUBSTR (p_query, i, 1);
11
12 IF l_char = '''' AND l_in_quotes
13 THEN
14 l_in_quotes := FALSE;
15 ELSIF l_char = '''' AND NOT l_in_quotes
16 THEN
17 l_in_quotes := TRUE;
18 l_query := l_query || '''#';
19 END IF;
20
21 IF NOT l_in_quotes
22 THEN
23 l_query := l_query || l_char;
24 END IF;
25 END LOOP;
26
27 l_query := TRANSLATE (l_query, '0123456789', '@@@@@@@@@@');
28
29 FOR i IN 0 .. 8
30 LOOP
31 l_query := REPLACE (l_query, LPAD ('@', 10 - i, '@'), '@');
32 l_query := REPLACE (l_query, LPAD (' ', 10 - i, ' '), ' ');
33 END LOOP;
34
35 RETURN UPPER (l_query);
36 END;
37 /
函数已创建。
SQL>