几个关于正确及错误PL/SQL对照使用的示例
2007-09-01 15:59
519 查看
/**
这是几个关于正确及错误PL/SQL对照使用的示例
*/
create table test(tid int primary key not null,tname varchar2(50));
create sequence test_seq start with 1 increment by 1;
insert into test values(test_seq.nextval,'FLB');
insert into test values(test_seq.nextval,'FLB1');
---------------------------------
--错误函数1
create or replace function f
return int
begin
return 5*5;
end;
--错误函数2
create or replace function f()
return number
is
begin
return 5*5;
end;
--错误函数3
create or replace function f
return number
begin
return 5*5;
end;
--该函数的正确函数1
create or replace function f
return number
is
begin
return 5*5;
end;
--该函数的正确函数2
create or replace function f
return int
is
begin
return 5*5;
end;
------------------------------------
--这是个正确函数,不过调试这个函数花了好几十分钟的时间,不熟悉了
create or replace function f5
(pid number)
return varchar2
is
rname varchar2(50);
cursor cname
is
select tname from test where tid=pid;
begin
open cname;
fetch cname into rname;
return rname;
end;
--调用函数用call出错
call f5(2);
--调用出错,函数必须有值的接收者
begin
f5(2);
end;
--这种方法调用不正确
declare
r varchar2;
begin
r:=f5(2);
dbms_output.put_line(r);
end;
--这种方法调用正确
begin
dbms_output.put_line(f5(2));
end;
--这种方法调用正确
declare
r varchar2(50);
begin
r:=f5(2);
dbms_output.put_line(r);
end;
--正确函数
create or replace function f4
(ttid in integer)
return varchar2
is
rname varchar(50);
cursor cname
is
select tname from test where tid=ttid;
begin
open cname;
fetch cname into rname;
return rname;
end;
--正确函数
create or replace function f7
(n in number)
return number
is
begin
return n*n;
end f7;
------------------------------------------
--过程
create or replace procedure p1
is
begin
dbms_output.put_line('First Procuder');
end p1;
--调用过程用call不会出错
call p1();
--这种方法调用过程不正确
begin
dbms_output.put_line(p1());
end;
----------注意函数与过程的调用的不同处----------
------------------------------------------------
--错误过程
create or replace procedure p3
(ttid in Integer)
is
rname varchar;
cursor cname
is
select tname from test where tid=ttid;
begin
open cname;
fetch cname into rname;
dbms_output.put_line(rname);
end;
--正确过程
create or replace procedure p3
(ttid in Integer)
is
rname varchar(50);
cursor cname
is
select tname from test where tid=ttid;
begin
open cname;
fetch cname into rname;
dbms_output.put_line(rname);
end;
这是几个关于正确及错误PL/SQL对照使用的示例
*/
create table test(tid int primary key not null,tname varchar2(50));
create sequence test_seq start with 1 increment by 1;
insert into test values(test_seq.nextval,'FLB');
insert into test values(test_seq.nextval,'FLB1');
---------------------------------
--错误函数1
create or replace function f
return int
begin
return 5*5;
end;
--错误函数2
create or replace function f()
return number
is
begin
return 5*5;
end;
--错误函数3
create or replace function f
return number
begin
return 5*5;
end;
--该函数的正确函数1
create or replace function f
return number
is
begin
return 5*5;
end;
--该函数的正确函数2
create or replace function f
return int
is
begin
return 5*5;
end;
------------------------------------
--这是个正确函数,不过调试这个函数花了好几十分钟的时间,不熟悉了
create or replace function f5
(pid number)
return varchar2
is
rname varchar2(50);
cursor cname
is
select tname from test where tid=pid;
begin
open cname;
fetch cname into rname;
return rname;
end;
--调用函数用call出错
call f5(2);
--调用出错,函数必须有值的接收者
begin
f5(2);
end;
--这种方法调用不正确
declare
r varchar2;
begin
r:=f5(2);
dbms_output.put_line(r);
end;
--这种方法调用正确
begin
dbms_output.put_line(f5(2));
end;
--这种方法调用正确
declare
r varchar2(50);
begin
r:=f5(2);
dbms_output.put_line(r);
end;
--正确函数
create or replace function f4
(ttid in integer)
return varchar2
is
rname varchar(50);
cursor cname
is
select tname from test where tid=ttid;
begin
open cname;
fetch cname into rname;
return rname;
end;
--正确函数
create or replace function f7
(n in number)
return number
is
begin
return n*n;
end f7;
------------------------------------------
--过程
create or replace procedure p1
is
begin
dbms_output.put_line('First Procuder');
end p1;
--调用过程用call不会出错
call p1();
--这种方法调用过程不正确
begin
dbms_output.put_line(p1());
end;
----------注意函数与过程的调用的不同处----------
------------------------------------------------
--错误过程
create or replace procedure p3
(ttid in Integer)
is
rname varchar;
cursor cname
is
select tname from test where tid=ttid;
begin
open cname;
fetch cname into rname;
dbms_output.put_line(rname);
end;
--正确过程
create or replace procedure p3
(ttid in Integer)
is
rname varchar(50);
cursor cname
is
select tname from test where tid=ttid;
begin
open cname;
fetch cname into rname;
dbms_output.put_line(rname);
end;
相关文章推荐
- 几个关于正确及错误PL/SQL对照使用的示例
- 如果Oracle是64bit的Oracle,使用32bit的PL/SQL会发生错误
- 关于在Webservice里使用LinqToSQL遇到一对多关系的父子表中子表需要ToList输出泛型而产生循环引用错误的解决办法!(转)
- C#关于"该进程无法访问文件,因为该文件正由另一进程使用"的错误的一点心得(示例)
- PL/SQL Developer结合oracle精简客户端使用配置错误代码ORA-12154: TNS: 无法解析指定的连接标识符
- [PL/SQL] 关于pl/sql编译报ORA-00934此处不允许使用分组函数 [复制链接]
- 使用PL/SQL Developer 登录时报"ora 12541 tns 无监听程序"错误,但使用SqlPlus登录时能够正常登陆
- 找了几个地方:发现关于SQL 的基本使用--sql日期精确推算
- web.config配置正确,PL/SQL可以登录,但仍然报数据库方面的错误(连接字符不正确)
- PL/SQL Developer 使用错误的tnsnames.ora,如何修改?
- 关于PL/SQL编译程序ORA-00600错误
- 使用PL/SQL developer 工具编译包或者其他objects时候出现错误
- PL/SQL Developer几个使用小技巧
- 1、在控制台使用sql插入语句插入中文时报如下错误: Incorrect string value: '\xD5\xC5\xC8\xFD' for column xxx..//不正确的字符串,属
- 使用原生sql查询数据返回object类型list时,转换数据列出现转换类型错误(但写法正确)
- oracle关于查询空间使用情况的几个sql语句
- PL/SQL Developer 使用错误的tnsnames.ora,如何修改?
- Oracle PL/SQL之函数索引(Function-based indexes)使用示例
- 关于使用ADODB.Connection (0x800A0E7A) 未找到提供程序。该程序可能未正确安装 错误的解决办法
- 使用PL/SQL Developer连接oracle数据库报“无法解析指定的连接标识符”错误