`
JAVA天地
  • 浏览: 658079 次
  • 性别: Icon_minigender_1
  • 来自: 太原
文章分类
社区版块
存档分类
最新评论

PL/SQL错误过程、函数及解决方案笔记

阅读更多
PL/SQL错误过程、函数及解决方案笔记
1、創建一個過程,利用cursor將一個表中的兩個字段的內容,以循環的方式放到另外一個表中。
create or replace procedure copy_data_into_newTable
as
declare
f_name varchar(50);
l_name varchar(50);
cursor t_cursor is
select first_name,last_name from students;
begin
open t_cursor;
loop
fetch t_cursor into f_name,l_name;
exit when t_cursor%notfound;
insert into stu4 values(f_name,l_name);
exit loop;
close t_cursor;
end copy_data_into_newTable;
解決方法:
錯誤很簡單,把loop的循環尾由exit loop改為end loop問題解決。
2、創建一個過程,用以實現一個表的完全拷貝(包括結構及內容)
create or replace procedure copy_table(
old_table varchar(50),
new_table varchar(50)
)
as
declare
--sql_copy_structure varchar(500);
--sql_copy_date varchar(200);
sql_copy varchar(500);
begin
sql_copy:='create table '||new_table||' as select * from '||old_table;
execute immediate sql_copy;
end copy_table;
解決方法:
錯誤例舉:
1、參數只能申明類型,而不能夠申明大小
2、declare是匿名块使用的聲明,在過程和函數中不要用
3、表名不要聲明過大,oracle有規定,不能夠超30
更改后程序如下:
create or replace procedure copy_table(
old_table varchar2,
new_table varchar
)
as
--sql_copy_structure varchar(500);
--sql_copy_date varchar(200);
sql_copy varchar(100);
begin
sql_copy:='create table '||new_table||' as select * from '||old_table;
execute immediate sql_copy;
exception
--people using this procedure don't have the proviledge to run this procedure
when others then
raise;
end copy_table;
3、觸發器觸發的時候出錯
這個觸發器的功能就是希望把當前插入的數據顯示出來。
表結構:
id first_name .....等
觸發器如下:
create or replace trigger T
after insert on stu for each row
declare
ID int;
str_sql varchar(100);
begin
ID:=:new.id;
str_sql:='select * from stu where id='||ID;
execute immediate str_sql;
exception
when others then
raise;
end T;
編譯通過。
可是當我stu表中插入數據的時候:
insert into stu values(student_sequence.NEXTVAL,'Feng','Meteor','Technology',4,120);
報以我這樣的錯誤:
table HR.STU is mutating,trigger/function may not see it。
插入不成功。
請問是什么原因嗎?
謝謝解答!
4、存儲過程運行的時候出錯
編譯不出錯,可是運行出錯
create or replace procedure FLB_2
as
cursor c1 is
select cno from prd_flow_bak group by cno;
thcur c1%rowtype;
sql1 varchar(100);
begin
--if not c1%isopen then
open c1;
--end if;
loop
fetch c1 into thcur;
exit when c1%notfound;
sql1:='select * from prd_flow_bak where cno='||thcur.cno;
--dbms_output.put_line(thcur.cno);
execute immediate sql1;
exit;
end loop;
close c1;
end FLB_2;
運行出錯
begin
FLB_2;
end;
出錯提示如下:
什么原因呢?
解決:
分享到:
评论

相关推荐

    PL/SQL学习笔记

    所有的pl/sql都叫过程 创建存储过程: create or replace procedure p1 (v1 int ,v2 int)--存储过程的参数列表 as --声明局部变量 begin null; end; 调用过程 1.declare调用 2.命令调用 删除存储过程:drop ...

    pl/sql笔记/sql笔记(游标创建存储过程)

    Pl/SQL简介 控制结构 复合数据类型 游标 异常 创建存储过程 函数的概念 包的概念 触发器概念

    Oracle 入门文档

    Oracle 入门文档 Oracle笔记 一、oracle...Oracle笔记 十一、PL/SQL函数和触发器 Oracle笔记 十二、PL/SQL 面向对象oop编程 Oracle笔记 十三、PL/SQL面向对象之package Oracle笔记 十四、查询XML操作、操作系统文件

    Oracle 入门文档2

    Oracle 入门文档 Oracle笔记 一、oracle...Oracle笔记 十一、PL/SQL函数和触发器 Oracle笔记 十二、PL/SQL 面向对象oop编程 Oracle笔记 十三、PL/SQL面向对象之package Oracle笔记 十四、查询XML操作、操作系统文件

    Oracle笔记,主要是关于SQL以及PL/SQL部分

    最近学习Oracle时写的笔记,对于Oracle中常用的数据库对象、函数,常用语句,PL/SQL都有涉及到,学习的时候是看的动力节点的视频,其中部分知识点摘自网络

    oracle复习笔记之PL/SQL程序所要了解的知识点

    异常处理机制、存储函数/存储过程、触发器。 为方便大家跟着我的笔记练习,为此提供数据库表文件给大家下载:点我下载 为了要有输出的结果,在写PL/SQL程序前都在先运行这一句: set serveroutput on 结构: declare...

    Oracle PL/SQL高级编程

    主要是Oracle过程,函数,触发器,游标,包学习中自己所做的一些笔记,希望能够让初学者做一些参考!

    PL_SQL数据库编程.sql

    PL/SQL编程,代码四千多行,适合于有基础的朋友当做笔记阅览,定期巩固浏览一下。

    oracle实用教程-韩顺平

    韩顺平老师 oracle 教程笔记 ...17.pl/sql 分类 -- 过程,函数,包,触发器 18.定义并使用变量,复合类型 19.pl/sql 的进阶--控制结构(分支,循环,控制) 20.PL/SQL 分页 21.例外处理 22.oracle 的视图

    oracle使用管理笔记(一些经验的总结)

    (7)PL/SQL进阶分页过程 62 (8)PL/SQL进阶例外 62 (9)视图 62 22.数据库管理+表的逻辑备份与恢复 63 23.数据字典和动态性能视图 67 24.oracle的卸载 69 25.尚学堂SQL简单讲解 70 Oracle常用函数 73 (1)trunc(for date...

    oracle学习笔记整理

    学习oracle知识笔记整理,包括pl/sql编程,过程、函数、游标开发等。

    Oracle的PL SQL笔记

    Oracle的PL SQL语句,例如:存储过程、函数、触发器等,都有代码详解,并将重点标出,便于阅读

    orcale笔记

    20. pl_sql 4 1)需要在控制台打印数据的时候必须先执行:set serveroutput on; 4 2)简单例子: 4 3)打印乘法表 4 4)打印星号三角形 4 5)根据雇员工资分级显示税金。 4 6)使用CASE结构实现职务转换。 4 7)求:...

    oracle优化笔记

    sql语句方面;pl/sql 编程方面;系统函数和系统包使用方面;DBA管理;oracle工具使用方面;oracle优化方面;其他

    成功之路 Oracle 11g 中文学习笔记

    成功之路 Oracle 11g ...在介绍Oracle系统管理的知识以后,讲介绍与开发相关的内容(如PL/SQL基础知识、存储过程、函数、包等),并介绍数据库性能调整,本书重点介绍了SQL语言调优。SQL语句调优是本书的另一个大特色!

    oracle mysql 笔记

    oracl函数 事物 游标 存储 mysql分页 sql语句拼写 pl/sql

    成功之路:Oracle11g学习笔记.pdf

    在介绍Oracle系统管理的知识以后,将介绍与开发相关的内容(如PL/SQL基础知识、存储过程、函数、包等),并介绍数据库性能调整,《成功之路:Oracle 11g学习笔记》重点介绍SQL语句调优。SQL语句调优是《成功之路:Oracle...

    Oracle JDBC书籍 教程

    SQL PL/SQL 存储过程 游标 连接池 查询 函数

Global site tag (gtag.js) - Google Analytics