这篇文章主要介绍“怎么使用CONSTANT变量与INDEX BY数组”,在日常操作中,相信很多人在怎么使用CONSTANT变量与INDEX BY数组问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用CONSTANT变量与INDEX BY数组”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

我创建了如下包头:

CREATEORREPLACEPACKAGEplch_pkgAUTHIDDEFINERISTYPEnames_tISTABLEOFVARCHAR2(20)INDEXBYPLS_INTEGER;ENDplch_pkg;/

哪些选项在执行之后会显示"3"?

(A)

DECLAREl_namesCONSTANTplch_pkg.names_t:=plch_pkg.names_t('Horton','Hears','AWho');BEGINDBMS_OUTPUT.put_line(l_names.COUNT);END;/

SQL>DECLARE2l_namesCONSTANTplch_pkg.names_t3:=plch_pkg.names_t('Horton','Hears','AWho');4BEGIN5DBMS_OUTPUT.put_line(l_names.COUNT);6END;7/DECLAREl_namesCONSTANTplch_pkg.names_t:=plch_pkg.names_t('Horton','Hears','AWho');BEGINDBMS_OUTPUT.put_line(l_names.COUNT);END;ORA-06550:第3行,第10列:PLS-00222:在此范围中不存在名为'NAMES_T'的函数ORA-06550:第2行,第14列:PL/SQL:ItemignoredORA-06550:第5行,第26列:PLS-00320:此表达式的类型声明不完整或格式不正确ORA-06550:第5行,第4列:PL/SQL:StatementignoredSQL>

(B)

DECLAREl_namesCONSTANTplch_pkg.names_t:=plch_pkg.names_t();BEGINl_names(1):='Horton';l_names(2):='Hears';l_names(3):='AWho';DBMS_OUTPUT.put_line(l_names.COUNT);END;/

SQL>DECLARE2l_namesCONSTANTplch_pkg.names_t3:=plch_pkg.names_t();4BEGIN5l_names(1):='Horton';6l_names(2):='Hears';7l_names(3):='AWho';8DBMS_OUTPUT.put_line(l_names.COUNT);9END;10/DECLAREl_namesCONSTANTplch_pkg.names_t:=plch_pkg.names_t();BEGINl_names(1):='Horton';l_names(2):='Hears';l_names(3):='AWho';DBMS_OUTPUT.put_line(l_names.COUNT);END;ORA-06550:第3行,第29列:PLS-00222:在此范围中不存在名为'NAMES_T'的函数ORA-06550:第2行,第14列:PL/SQL:ItemignoredORA-06550:第5行,第4列:PLS-00320:此表达式的类型声明不完整或格式不正确ORA-06550:第5行,第4列:PL/SQL:StatementignoredORA-06550:第6行,第4列:PLS-00320:此表达式的类型声明不完整或格式不正确ORA-06550:第6行,第4列:PL/SQL:StatementignoredORA-06550:第7行,第4列:PLS-00320:此表达式的类型声明不完整或格式不正确ORA-06550:第7行,第4列:PL/SQL:StatementignoredORA-06550:第8行,第26列:PLS-00320:此表达式的类型声明不完整或格式不正确ORA-06550:第8行,第4列:PL/SQL:StatementignoredSQL>

(C)

CREATEORREPLACEFUNCTIONplch_dr_seuss_namesRETURNplch_pkg.names_tISl_returnplch_pkg.names_t;BEGINl_return(1):='Horton';l_return(2):='Hears';l_return(3):='AWho';RETURNl_return;ENDplch_dr_seuss_names;/DECLAREl_namesCONSTANTplch_pkg.names_t:=plch_dr_seuss_names();BEGINDBMS_OUTPUT.put_line(l_names.COUNT);END;/

SQL>CREATEORREPLACEFUNCTIONplch_dr_seuss_names2RETURNplch_pkg.names_t3IS4l_returnplch_pkg.names_t;5BEGIN6l_return(1):='Horton';7l_return(2):='Hears';8l_return(3):='AWho';9RETURNl_return;10ENDplch_dr_seuss_names;11/FunctioncreatedSQL>DECLARE2l_namesCONSTANTplch_pkg.names_t3:=plch_dr_seuss_names();4BEGIN5DBMS_OUTPUT.put_line(l_names.COUNT);6END;7/3PL/SQLproceduresuccessfullycompletedSQL>

(D)

CREATEORREPLACEFUNCTIONplch_dr_seuss_names(name1_inINVARCHAR2,name2_inINVARCHAR2,name3_inINVARCHAR2)RETURNplch_pkg.names_tISl_returnplch_pkg.names_t;BEGINl_return(1):=name1_in;l_return(2):=name2_in;l_return(3):=name3_in;RETURNl_return;ENDplch_dr_seuss_names;/DECLAREl_namesCONSTANTplch_pkg.names_t:=plch_dr_seuss_names('Horton','Hears','AWho');BEGINDBMS_OUTPUT.put_line(l_names.COUNT);END;/

SQL>CREATEORREPLACEFUNCTIONplch_dr_seuss_names(2name1_inINVARCHAR23,name2_inINVARCHAR24,name3_inINVARCHAR2)5RETURNplch_pkg.names_t6IS7l_returnplch_pkg.names_t;8BEGIN9l_return(1):=name1_in;10l_return(2):=name2_in;11l_return(3):=name3_in;12RETURNl_return;13ENDplch_dr_seuss_names;14/FunctioncreatedSQL>DECLARE2l_namesCONSTANTplch_pkg.names_t3:=plch_dr_seuss_names('Horton','Hears','AWho');4BEGIN5DBMS_OUTPUT.put_line(l_names.COUNT);6END;7/3PL/SQLproceduresuccessfullycompletedSQL>

答案CD.ORACLE只对嵌套表(NESTEDTABLE)和可变数组(VARRAY)提供构造函数(constructorfunction),ASSOCIATEDARRAY(即INDEXBY表)则没有这个构造函数,必须采用自定义函数。常量在声明的部分必须赋值,不能够在块中赋值。

到此,关于“怎么使用CONSTANT变量与INDEX BY数组”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!