我是这里的新成员,所以如果我不能遵守这里的规则,请向我道歉。我使用的是Oracle 11g速成版本以及pl/sql。我正在尝试转换oracle 11g中的sql服务器数据库。到目前为止,我已经做了一切。但是现在我正在尝试转换procedures。我已经做了所有的改变,但我仍然不能完全制定程序。
这是SQL server中的程序代码:
create proc Result_proc
@name varchar(40),
@Test varchar(40)
as
(
select * from [Result View] where ([Student Name] = @name AND Test# IN (@Test))
)ORACLE中的转换代码:
create or replace procedure Result_proc (
p_name varchar2,
p_Test varchar2)
as
begin
(
select * from ahmad where (Student_Name = p_name AND Test# IN (p_Test))
)
end;在这个映像中,当我在PL/SQL中运行转换后的代码时,它没有正确地执行:PL/SQL中转换proc的输出
输出:
SQL> 10发布于 2017-12-19 16:15:04
在Server中,此存储过程意味着“将此select语句的结果返回给客户端”。在MSSQL中返回记录集是常见的方法。
当使用Oracle时,默认的方法是使用ref游标输出参数。此过程应转换为类似于
create procedure Result_Proc(p_Name varchar2, p_Test varchar2, p_Result out sys_refcursor) is
begin
open p_result for
select * from "Result View" where student_name = p_Name and test# = p_Test;
end;但一般来说,更好的方法是完全放弃这种垃圾程序。与MSSQL不同,Oracle不需要选择SPs作为安全调用。更强大和方便的方法就是直接选择你需要的东西。
https://stackoverflow.com/questions/47889830
复制相似问题