--假如这里举个例如果有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_3
END

解决方案 »

  1.   

    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语句。
      

  2.   

    问题1:
    Oracle中的存储子程序分为存储过程和存储函数,二者的区别就是后者可以有返回值。示例请参考:
    问题2:Oracle存储过程可以没有参数。问题3:Oracle存储过程中可以写不限数理的查询语句,但查询语句必须带有into子句。
           你举的例子的实现,得使用光标,来保存查询结果集。
           当然需要定义3个光标了,因为每个查询语句都是一个结果集(因为会返回多条记录)
      

  3.   

    谢谢,但是为题二那种没参数的我老是也不对,请给个例子,
    问题三说得光标是不是包的意思呢?
    那么返回的结果集是DaTaSet还是DaTaTable?
    我是ASP.NET开发,如果是DaTaSet那样会好用点
      

  4.   

    1、如果有insert,delete,update等事务处理,使用过程
    2、使用过程,可以通过out argument的方式返回
    3、如果仅select,返回内容,更多时候使用functioncreate or replace procedure pro1 is
    begin
      insert into a1 values(100,100);
    end pro1;4、oracle支持自定义类型,你可以范围任何形式,包括一个组合的dataset
      

  5.   

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

  6.   


    柳阴兄,long time no see .