您的位置首页百科问答

ORACLE里面BULK INSERT语法有么

ORACLE里面BULK INSERT语法有么

方法四:不用临时表了,用函数配合SQL查询语句一次搞定CREATE OR REPLACE FUNCTION DEALSTRING(P_DEPTNO EMP.DEPTNO%TYPE) RETURN VARCHAR2 ISCURSOR C1 IS SELECT ENAME FROM EMP WHERE DEPTNO=P_DEPTNO; --定义游标C1TYPE T_TYPE IS TABLE OF EMP.ENAME%TYPE; --定义嵌套表V_T_TYPE T_TYPE:=T_TYPE(); --初始化嵌套表V_STRING VARCHAR2(1000); --作为范围字符串BEGINNULL;OPEN C1;FETCH C1 BULK COLLECT INTO V_T_TYPE; --一次性把游标中的所有数据读出来存放在嵌套表V_T_TYPE中,CLOSE C1;FOR I IN 1..V_T_TYPE.COUNT LOOP--一滚宴次读取嵌套表V_T_TYPE中的数据,进行字符串连接,处理为A,B,C,D,的竖备滑形式V_STRING:=V_STRING||V_T_TYPE(I)||',';END LOOP;V_STRING:=SUBSTR(V_STRING,0,LENGTH(V_STRING)-1); --把最后的逗号去掉RETURN V_STRING; --返回字符串END DEALSTRING;SELECT * FROM USER_OBJECTS S WHERE S.OBJECT_NAME=UPPER('DEALSTRING');SELECT DISTINCT DEPTNO,DEALSTRING(DEPTNO) FROM EMP WHERE DEPTNO IS NOT NULL; --避开空的原因是我的表余腊中有一条记录的部门号为空;