- 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
你可以自定义任何形式
------解决方案--------------------