2017-12-19 17 views
0

나는 여기서 새로운 규칙을 따를 수 없으므로 저에게 사과합니다. pl/sql과 함께 Oracle 11g Express Edition을 사용하고 있습니다. Oracle 11g에서 SQL Server 데이터베이스를 변환하려고합니다. 지금까지 나는 모든 것을했습니다. 하지만 이제는 procedures으로 변환하려고합니다. 나는 모든 변화를했으나 아직도 절차를 완전히 할 수는 없습니다. ORACLE에서오라클에서 프로 시저 변환

create proc Result_proc 
@name varchar(40), 
@Test varchar(40) 
as 
(
select * from [Result View] where ([Student Name] = @name AND Test# IN (@Test)) 
) 

변환 코드 : 내가 PL/SQL에서 변환 된 코드를 실행하면

가 여기에 표시되는 이미지의
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; 

그것이

는 SQL 서버의 프로 시저의 코드 하지 제대로 실행 : Output of CONVERTED proc in PL/SQL

출력 :

SQL> 10 
+0

[ "SQL"은 (는) 언어입니다] (https://en.wikipedia.org/wiki/SQL). 아마도 SQL Server를 의미합니까? 출력을 텍스트로 게시하십시오. [이미지가 아닙니다.] (http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking -a-questions/285557 # 285557). 프로 시저 정의를 종료하기 위해 슬래시'/'가 누락 된 것처럼 보입니다. –

+1

새로운 언어를 배울 때 유용한 팁은 공식 문서를 읽는 것입니다. [PL/SQL 사용자 가이드는 여기에서 찾을 수 있습니다 (https://docs.oracle.com/cloud/latest/db112/LNPLS/title.htm). 코드에는 매뉴얼의 예제와 비교하여 스스로 알아볼 수 있어야하는 몇 가지 간단한 구문 오류가 있습니다. – APC

답변

0

SQL Server에서이 저장 프로시 저는 '이 SELECT 문의 결과를 클라이언트에 반환'을 의미합니다. 레코드 세트를 반환하는 일반적인 방법입니다.

오라클을 사용하는 경우 기본 방법은 참조 커서 출력 매개 변수를 사용하는 것입니다. 이 절차는 비슷한 것으로 변환되어야합니다

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은 보안 호출과 같은 선택 SP를 요구하지 않습니다. 더 강력하고 편리한 방법은 직접 필요한 것을 선택하는 것입니다.