Plsql 有人能解释一下dbms\u sql.number\u表吗
我试图搜索这个,但没有得到一个满意的答案,因此张贴在这里。在理解Plsql 有人能解释一下dbms\u sql.number\u表吗,plsql,oracle11g,oracle10g,Plsql,Oracle11g,Oracle10g,我试图搜索这个,但没有得到一个满意的答案,因此张贴在这里。在理解NUMBER\u TABLE之前,请有人解释一下更好地理解DBMS\u SQL本身。 (我这样做是为了学习!) 实际上是, TYPE number_table IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; 所以,只允许数字 关于DBMS\u SQL如何工作的流程图!: 您感兴趣的区域位于绑定变量框中 p.S.纯粹的敲诈,还有更多的信件,来自对不起,你在问什么?用谷歌搜索这个词(第一个链接
NUMBER\u TABLE
之前,请有人解释一下更好地理解DBMS\u SQL
本身。
(我这样做是为了学习!) 实际上是,
TYPE number_table IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
所以,只允许数字
关于DBMS\u SQL如何工作的流程图!:强>
您感兴趣的区域位于绑定变量框中
p.S.纯粹的敲诈,还有更多的信件,来自对不起,你在问什么?用谷歌搜索这个词(第一个链接)可以得到一整页的信息这也可能有帮助(如果没有意义,那么是时候好好读书了)“Oracle允许您编写使用动态SQL的存储过程和匿名PL/SQL块。动态SQL语句没有嵌入到源程序中;相反,它们存储在字符串中,这些字符串在运行时输入程序或由程序生成。这使您能够创建更多的通用过程。“@robnick我只需要一个清晰的好例子。”@AsfakulIslam-您了解PL/SQL集合的基础知识吗
dbms\u sql.number\u table
只是在dbms\u sql
包中定义的一个集合。它与您可以在自己的包中声明的集合没有什么不同。@JustinCave它只是用来保存数字的吗?@AsfakulIslam-是的,它是数字的集合。更具体地说,是数字的关联数组。
TYPE number_table IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
-- | open_cursor |
-- -----------
-- |
-- |
-- v
-- -----
-- ------------>| parse |
-- | -----
-- | |
-- | | ---------
-- | v |
-- | -------------- |
-- |-------->| bind_variable | |
-- | ^ ------------- |
-- | | | |
-- | -----------| |
-- | |<--------
-- | v
-- | query?---------- yes ---------
-- | | |
-- | no |
-- | | |
-- | v v
-- | ------- -------------
-- |----------->| execute | ->| define_column |
-- | ------- | -------------
-- | |------------ | |
-- | | | ----------|
-- | v | v
-- | -------------- | -------
-- | ->| variable_value | | ------>| execute |
-- | | -------------- | | -------
-- | | | | | |
-- | ----------| | | |
-- | | | | v
-- | | | | ----------
-- | |<----------- |----->| fetch_rows |
-- | | | ----------
-- | | | |
-- | | | v
-- | | | -----------------
-- | | | | column_value |
-- | | | | variable_value |
-- | | | -----------------
-- | | | |
-- | |<--------------------------
-- | |
-- -----------------|
-- |
-- v
-- ------------
-- | close_cursor |
--
------------
DECLARE
stmt VARCHAR2(200);
dept_no_array DBMS_SQL.NUMBER_TABLE;
c NUMBER;
dummy NUMBER;
begin
dept_no_array(1) := 10; dept_no_array(2) := 20; /* Put some values into the array */
dept_no_array(3) := 30; dept_no_array(4) := 40;
dept_no_array(5) := 30; dept_no_array(6) := 40;
stmt := 'delete from emp where deptno = :dept_array'; /* A Dynamic SQL String with a bind variable */
c := DBMS_SQL.OPEN_CURSOR; /* Open a Cursor! */
DBMS_SQL.PARSE(c, stmt, DBMS_SQL.NATIVE); /* Parse the Dynamic SQL , making it happen on the native database to which is connected! */
DBMS_SQL.BIND_ARRAY(c, ':dept_array', dept_no_array, 1, 4);
/* Bind only elements 1 through 4 to the cursor Happens 4 times */
dummy := DBMS_SQL.EXECUTE(c);
/* Execute the Query, and return number of rows deleted! */
DBMS_SQL.CLOSE_CURSOR(c);
EXCEPTION WHEN OTHERS THEN
IF DBMS_SQL.IS_OPEN(c) THEN
DBMS_SQL.CLOSE_CURSOR(c);
END IF;
RAISE;
END;
/