|
楼主 |
发表于 2011-10-31 02:49
|
显示全部楼层
2011-10-27 答案CD. ORACLE只对嵌套表(NESTED TABLE)和可变数组(VARRAY)提供构造函数(constructor function), ASSOCIATED ARRAY (即INDEX BY表)则没有这个构造函数,必须采用自定义函数。常量在声明的部分必须赋值,不能够在块中赋值。
======================================
2011-10-28 LIKE条件中的通配符
作者:Marc Thompson
难度:低
我创建了这张表并填入数据:
CREATE TABLE plch_new_parts
(
partnum NUMBER
, partname VARCHAR2 (50)
)
/
BEGIN
INSERT INTO plch_new_parts (partnum, partname)
VALUES (1, 'MY PART NUMBER 1');
INSERT INTO plch_new_parts (partnum, partname)
VALUES (2, 'MY_PART_NUMBER_2');
INSERT INTO plch_new_parts (partnum, partname)
VALUES (3, 'MY_PART NUMBER_3');
COMMIT;
END;
/
当我执行下列这段代码,屏幕上会显示什么?
DECLARE
l_counts DBMS_SQL.number_table;
BEGIN
l_counts (1) := 0;
l_counts (2) := 0;
l_counts (3) := 0;
l_counts (4) := 0;
FOR rec IN ( SELECT partname
FROM plch_new_parts
ORDER BY partnum)
LOOP
IF rec.partname LIKE 'MY PART NUMBER %'
THEN
l_counts (1) := l_counts (1) + 1;
END IF;
IF rec.partname LIKE 'MY_PART_NUMBER_%'
THEN
l_counts (2) := l_counts (2) + 1;
END IF;
IF rec.partname LIKE 'MY_PART NUMBER_%'
THEN
l_counts (3) := l_counts (3) + 1;
END IF;
IF rec.partname LIKE 'MY?PART?NUMBER?*'
THEN
l_counts (4) := l_counts (4) + 1;
END IF;
END LOOP;
FOR indx IN 1 .. l_counts.COUNT
LOOP
DBMS_OUTPUT.put_line (l_counts (indx));
END LOOP;
END;
/
(A)
1
1
1
0
(B)
1
3
2
0
(C)
0
0
0
3
(D)
3
3
3
3
(E)
1
3
2
3 |
|