Orcale11g 动态行转列
在一张表里有200多个收费项目需要行转列,本人太懒实在不想一个个敲,就想到了动态实现行转列。
1、使用了一丢丢的存储过程
2、开始行转列
一、介绍基本的存储过程使用方法
1、存储过程的语法
Create or replace procedure 存储过程名称(参数名称 {in|out|in out} datatype,参数名称 out sys_refcursor)
is|as
变量名称 datatype(lenth);
begin
body;
end;
其中各项参数介绍如下:
create or replace :创建或者更新,如果存在已有存储过程就更新。
{in|out|in out}:in 输入参数,out 输出参数,in out 可输入可输出。默认是in输入模式,在这里定义参数可以不用加数据长度。
sys_refcursor:Orcale 自带的输出游标,把结果集一把输出,不需遍历输出,个人感觉用来输出结果非常方便。
is|as:连接词。
datatype(lenth):数据类型(长度)eg: name varchar2(200)。
2、游标
接下来介绍3种游标
1、sys_refcursor:orcale自带的函数,可以一把输出结果集,不需遍历,不需要初始化赋值。
2、ref cursor:需要先说明 eg:type weak_ref_cursor is ref cursor;
CURSOR_1 weak_ref_cursor;不需要初始化赋值。
3、CURSOR:必须初始化赋值 eg:CURSOR CURSOR_1 IS SELECT NAME FROM SKFS WHERE CODE<10;
具体在行转列的实现展示。
二、开始实现行转列
1、通过收款方式进行动态行转列
这是原表:
这是效果表:
2、具体实现
如果只需要知道怎么行转列,具体看这一块就可以了
以下是全部SQL