ORACLE里面BULK INSERT语法有么
1个回答
2016-08-21 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
方法四:不用临时表了,用函数配合SQL查询语句一次搞定
CREATE OR REPLACE FUNCTION DEALSTRING(P_DEPTNO EMP.DEPTNO%TYPE) RETURN VARCHAR2
IS
CURSOR C1 IS SELECT ENAME FROM EMP WHERE DEPTNO=P_DEPTNO; --定义游标C1
TYPE T_TYPE IS TABLE OF EMP.ENAME%TYPE; --定义嵌套表
V_T_TYPE T_TYPE:=T_TYPE(); --初始化嵌套表
V_STRING VARCHAR2(1000); --作为范围字符串
BEGIN
NULL;
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; --避开空的原因是我的表中有一条记录的部门号为空;
CREATE OR REPLACE FUNCTION DEALSTRING(P_DEPTNO EMP.DEPTNO%TYPE) RETURN VARCHAR2
IS
CURSOR C1 IS SELECT ENAME FROM EMP WHERE DEPTNO=P_DEPTNO; --定义游标C1
TYPE T_TYPE IS TABLE OF EMP.ENAME%TYPE; --定义嵌套表
V_T_TYPE T_TYPE:=T_TYPE(); --初始化嵌套表
V_STRING VARCHAR2(1000); --作为范围字符串
BEGIN
NULL;
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; --避开空的原因是我的表中有一条记录的部门号为空;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询