programing

저장 프로시저에서 "반품"을 사용할 수 있습니까?

lastcode 2023. 7. 21. 21:40
반응형

저장 프로시저에서 "반품"을 사용할 수 있습니까?

 CREATE PROCEDURE Pname(in_Tid IN VARCHAR2,in_IP IN VARCHAR2,outstaticip OUT VARCHAR2,outcount OUT NUMBER)
 AS
 BEGIN
 select STATIC_IP into outstaticip from OP_TTER_MAPPING where TERMINAL_ID = in_Tid;
 if in_IP = outstaticip then
 return 1;
 else
 select COUNT(*) into outcount from OP_TTER_MAPPING where DYNAMIC_IP_LOW <= in_IP AND   DYNAMIC_IP_HIGH >= in_IP AND TERMINAL_ID = in_Tid;
 if outcount = 1 then
 return 1;
 else
 return 0;
  end if;
 end if;
 END;
  1. 위와 같은 저장 프로시저에서 반품을 사용할 수 있습니까?
  2. 반품을 사용할 수 있다면, 반품 값을 어떻게 얻을 수 있습니까?Executesql("begin Pname(----)END")방법

편집

이제 이렇게 저장 프로시저에서 반품 값을 편집했는데, 제대로 하고 있나요?

CREATE PROCEDURE P_ValidateTIDIP(in_Tid IN VARCHAR2,in_IP IN VARCHAR2,outstaticip OUT VARCHAR2,outcount OUT NUMBER,outretvalue OUT NUMBER)
AS
BEGIN
select STATIC_IP into outstaticip from OP_TTER_MAPPING where TERMINAL_ID = in_Tid;
if in_IP = outstaticip then
    outretvalue:=1;
else 
    select COUNT(*) into outcount from OP_TTER_MAPPING where DYNAMIC_IP_LOW <= in_IP AND DYNAMIC_IP_HIGH >= in_IP AND TERMINAL_ID = in_Tid;
    if outcount = 1 then 
     outretvalue:=1;
    else
     outretvalue:=0;
   end if;
end if;
END;

저장 프로시저에서 다음을 사용하여 값을 반환합니다.OUT매개 변수만.예제에서 두 개의 변수를 정의한 것처럼,

   outstaticip OUT VARCHAR2, outcount OUT NUMBER

반환 값을 out 매개 변수에 할당하기만 하면 됩니다.outstaticip그리고.outcount통화 위치에서 다시 액세스할 수 있습니다.여기서 제가 의미하는 것은 저장 프로시저를 호출할 때 이 두 변수도 전달하게 된다는 것입니다. 저장 프로시저 호출 후에는 변수가 반환 값으로 채워집니다.

갖고 싶다면,RETURN valuePL/SQL 호출에서 반환된 다음FUNCTION이 경우 하나의 변수만 반환 변수로 반환할 수 있습니다.

기능 사용:

CREATE OR REPLACE FUNCTION test_function
RETURN VARCHAR2 IS

BEGIN
  RETURN 'This is being returned from a function';
END test_function;
-- IN arguments : you get them. You can modify them locally but caller won't see it
-- IN OUT arguments: initialized by caller, already have a value, you can modify them and the caller will see it
-- OUT arguments: they're reinitialized by the procedure, the caller will see the final value.
CREATE PROCEDURE f (p IN NUMBER, x IN OUT NUMBER, y OUT NUMBER)
IS
BEGIN
   x:=x * p;
   y:=4 * p;
END;
/

SET SERVEROUTPUT ON

declare
   foo number := 30;
   bar number := 0;
begin
   f(5,foo,bar);
   dbms_output.put_line(foo || ' ' || bar);
end;
/

절차 출력은 변수 x 및 y(ans1:= x 및 ans2:=y)에서 각각 150 및 20이 됩니다.

다음에서 빌린 답변: https://stackoverflow.com/a/9484228/1661078

가능하다.

프로시저 내부에서 Return을 사용하면 컨트롤이 프로시저를 호출하는 호출 프로그램으로 전송됩니다.그것은 마치 루프의 출구와 같습니다.

값을 반환하지 않습니다.

CREATE PROCEDURE pr_emp(dept_id IN NUMBER,vv_ename out varchar2  )
 AS
 v_ename emp%rowtype;
CURSOR c_emp IS
    SELECT ename
    FROM emp where deptno=dept_id;
 BEGIN
     OPEN c;
     loop
        FETCH c_emp INTO v_ename;
        return v_ename; 
        vv_ename := v_ename 
        exit when c_emp%notfound;
     end loop;
     CLOSE c_emp;


 END pr_emp;

언급URL : https://stackoverflow.com/questions/13225532/is-it-possible-to-use-return-in-stored-procedure

반응형