当前位置: 代码迷 >> Oracle管理 >> Oracle存储过程的几个小问题,望指教
  详细解决方案

Oracle存储过程的几个小问题,望指教

热度:13   发布时间:2016-04-24 05:35:54.0
Oracle存储过程的几个问题,望指教
SQL code
--假如这里举个例如果有sql2005里面写一个存储过程可以用Return返回值,CREATE procedure PROC_INSERT(        @Name_cn VARCHAR(100)   )AS BEGIN INSERT INTO TabelName (NAME_CN)  VALUES (@Name_cn)  RETURN '执行成功'END--如果换了Oracle数据的存储过程是否可以同样实现呢?--Oracle是不是要想得到返回结果必须使用OUT参数返回一个结果.请指教--还有个实例例如sql2005可以写一个没有参数的存储过程--Oracle有没有同样的方式呢? CREATE procedure PROC_INSERT AS BEGIN  --要执行的语句  END--还有一个问题Oracle是否可以在一个存储过程执行多个Select语句--例如Sql2005可以这样写,Oracle是否可以获取到这个查询结果呢,是三个Select的查询结果集CREATE procedure PROC_INSERT  AS BEGIN  SELECT * FROM Tabel_1   SELECT * FROM Tabel_2   SELECT * FROM Tabel_3END


------解决方案--------------------
1.CREATE procedure PROC_INSERT(Name_cn varchar,result varchar)

AS
 
BEGIN
 INSERT INTO TabelName (NAME_CN) 
 VALUES (Name_cn)
 
 result :='执行成功';
END
2.oracle存储过程不能只执行select语句。

------解决方案--------------------
问题1:
Oracle中的存储子程序分为存储过程和存储函数,二者的区别就是后者可以有返回值。示例请参考:


问题2:Oracle存储过程可以没有参数。

问题3:Oracle存储过程中可以写不限数理的查询语句,但查询语句必须带有into子句。
你举的例子的实现,得使用光标,来保存查询结果集。
当然需要定义3个光标了,因为每个查询语句都是一个结果集(因为会返回多条记录)
------解决方案--------------------
1、如果有insert,delete,update等事务处理,使用过程
2、使用过程,可以通过out argument的方式返回
3、如果仅select,返回内容,更多时候使用function

create or replace procedure pro1 is
begin
insert into a1 values(100,100);
end pro1;

4、oracle支持自定义类型,你可以范围任何形式,包括一个组合的dataset
------解决方案--------------------
4、oracle支持自定义类型,你可以范围任何形式,包括一个组合的dataset

你可以自定义任何形式
------解决方案--------------------
探讨
引用:

1、如果有insert,delete,update等事务处理,使用过程
2、使用过程,可以通过out argument的方式返回
3、如果仅select,返回内容,更多时候使用function

create or replace procedure pro1 is
begin
insert into a1 values(100,100);……
  相关解决方案