這篇文章主要介紹“怎么使用CONSTANT變量與INDEX BY數(shù)組”,在日常操作中,相信很多人在怎么使用CONSTANT變量與INDEX BY數(shù)組問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用CONSTANT變量與INDEX BY數(shù)組”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)公司是一家專業(yè)提供安寧企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、H5開發(fā)、小程序制作等業(yè)務(wù)。10年已為安寧眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
我創(chuàng)建了如下包頭:
CREATE OR REPLACE PACKAGE plch_pkg AUTHID DEFINER IS TYPE names_t IS TABLE OF VARCHAR2 (20) INDEX BY PLS_INTEGER; END plch_pkg; /
哪些選項(xiàng)在執(zhí)行之后會(huì)顯示"3"?
(A)
DECLARE l_names CONSTANT plch_pkg.names_t := plch_pkg.names_t ('Horton', 'Hears', 'A Who') ; BEGIN DBMS_OUTPUT.put_line (l_names.COUNT); END; /
SQL> DECLARE 2 l_names CONSTANT plch_pkg.names_t 3 := plch_pkg.names_t ('Horton', 'Hears', 'A Who') ; 4 BEGIN 5 DBMS_OUTPUT.put_line (l_names.COUNT); 6 END; 7 / DECLARE l_names CONSTANT plch_pkg.names_t := plch_pkg.names_t ('Horton', 'Hears', 'A Who') ; BEGIN DBMS_OUTPUT.put_line (l_names.COUNT); END; ORA-06550: 第 3 行, 第 10 列: PLS-00222: 在此范圍中不存在名為 'NAMES_T' 的函數(shù) ORA-06550: 第 2 行, 第 14 列: PL/SQL: Item ignored ORA-06550: 第 5 行, 第 26 列: PLS-00320: 此表達(dá)式的類型聲明不完整或格式不正確 ORA-06550: 第 5 行, 第 4 列: PL/SQL: Statement ignored SQL>
(B)
DECLARE l_names CONSTANT plch_pkg.names_t := plch_pkg.names_t () ; BEGIN l_names (1) := 'Horton'; l_names (2) := 'Hears'; l_names (3) := 'A Who'; DBMS_OUTPUT.put_line (l_names.COUNT); END; /
SQL> DECLARE 2 l_names CONSTANT plch_pkg.names_t 3 := plch_pkg.names_t () ; 4 BEGIN 5 l_names (1) := 'Horton'; 6 l_names (2) := 'Hears'; 7 l_names (3) := 'A Who'; 8 DBMS_OUTPUT.put_line (l_names.COUNT); 9 END; 10 / DECLARE l_names CONSTANT plch_pkg.names_t := plch_pkg.names_t () ; BEGIN l_names (1) := 'Horton'; l_names (2) := 'Hears'; l_names (3) := 'A Who'; DBMS_OUTPUT.put_line (l_names.COUNT); END; ORA-06550: 第 3 行, 第 29 列: PLS-00222: 在此范圍中不存在名為 'NAMES_T' 的函數(shù) ORA-06550: 第 2 行, 第 14 列: PL/SQL: Item ignored ORA-06550: 第 5 行, 第 4 列: PLS-00320: 此表達(dá)式的類型聲明不完整或格式不正確 ORA-06550: 第 5 行, 第 4 列: PL/SQL: Statement ignored ORA-06550: 第 6 行, 第 4 列: PLS-00320: 此表達(dá)式的類型聲明不完整或格式不正確 ORA-06550: 第 6 行, 第 4 列: PL/SQL: Statement ignored ORA-06550: 第 7 行, 第 4 列: PLS-00320: 此表達(dá)式的類型聲明不完整或格式不正確 ORA-06550: 第 7 行, 第 4 列: PL/SQL: Statement ignored ORA-06550: 第 8 行, 第 26 列: PLS-00320: 此表達(dá)式的類型聲明不完整或格式不正確 ORA-06550: 第 8 行, 第 4 列: PL/SQL: Statement ignored SQL>
(C)
CREATE OR REPLACE FUNCTION plch_dr_seuss_names RETURN plch_pkg.names_t IS l_return plch_pkg.names_t; BEGIN l_return (1) := 'Horton'; l_return (2) := 'Hears'; l_return (3) := 'A Who'; RETURN l_return; END plch_dr_seuss_names; / DECLARE l_names CONSTANT plch_pkg.names_t := plch_dr_seuss_names () ; BEGIN DBMS_OUTPUT.put_line (l_names.COUNT); END; /
SQL> CREATE OR REPLACE FUNCTION plch_dr_seuss_names 2 RETURN plch_pkg.names_t 3 IS 4 l_return plch_pkg.names_t; 5 BEGIN 6 l_return (1) := 'Horton'; 7 l_return (2) := 'Hears'; 8 l_return (3) := 'A Who'; 9 RETURN l_return; 10 END plch_dr_seuss_names; 11 / Function created SQL> DECLARE 2 l_names CONSTANT plch_pkg.names_t 3 := plch_dr_seuss_names () ; 4 BEGIN 5 DBMS_OUTPUT.put_line (l_names.COUNT); 6 END; 7 / 3 PL/SQL procedure successfully completed SQL>
(D)
CREATE OR REPLACE FUNCTION plch_dr_seuss_names ( name1_in IN VARCHAR2 , name2_in IN VARCHAR2 , name3_in IN VARCHAR2) RETURN plch_pkg.names_t IS l_return plch_pkg.names_t; BEGIN l_return (1) := name1_in; l_return (2) := name2_in; l_return (3) := name3_in; RETURN l_return; END plch_dr_seuss_names; / DECLARE l_names CONSTANT plch_pkg.names_t := plch_dr_seuss_names ('Horton', 'Hears', 'A Who') ; BEGIN DBMS_OUTPUT.put_line (l_names.COUNT); END; /
SQL> CREATE OR REPLACE FUNCTION plch_dr_seuss_names ( 2 name1_in IN VARCHAR2 3 , name2_in IN VARCHAR2 4 , name3_in IN VARCHAR2) 5 RETURN plch_pkg.names_t 6 IS 7 l_return plch_pkg.names_t; 8 BEGIN 9 l_return (1) := name1_in; 10 l_return (2) := name2_in; 11 l_return (3) := name3_in; 12 RETURN l_return; 13 END plch_dr_seuss_names; 14 / Function created SQL> DECLARE 2 l_names CONSTANT plch_pkg.names_t 3 := plch_dr_seuss_names ('Horton', 'Hears', 'A Who') ; 4 BEGIN 5 DBMS_OUTPUT.put_line (l_names.COUNT); 6 END; 7 / 3 PL/SQL procedure successfully completed SQL>
答案CD. ORACLE只對嵌套表(NESTED TABLE)和可變數(shù)組(VARRAY)提供構(gòu)造函數(shù)(constructor function), ASSOCIATED ARRAY (即INDEX BY表)則沒有這個(gè)構(gòu)造函數(shù),必須采用自定義函數(shù)。常量在聲明的部分必須賦值,不能夠在塊中賦值。
到此,關(guān)于“怎么使用CONSTANT變量與INDEX BY數(shù)組”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!