周翔 发表于 2018-9-10 11:43:24

Oracle存储过程学习

显示的开启游标  
CREATE OR REPLACE PROCEDURE EMPLOYEE_SALARY(GENTEE IN VARCHAR2) AS
  
CURSOR CUR IS
  
    SELECT FIRST_NAME || LAST_NAME EMPLOYEE_NAME, SALARY
  
      FROM EMPLOYEES
  
   WHERE EMPLOYEESEX = GENTEE;
  
R EMPLOYEES % ROWTYPE;
  
BEGIN
  
FOR R IN CUR LOOP
  
    BEGIN
  
      DBMS_OUTPUT.PUT_LINE('EMPLOYEE_NAME: ' || R.EMPLOYEE_NAME ||
  
                           ' EMPLOYEE_SALARY: ' || R.SALARY);
  
    END;
  
END LOOP;
  
END EMPLOYEE_SALARY;
  
显示的开启游标方法2:
  
CREATE OR REPLACE PROCEDURE EMPLOYEE_SALARY (GENTEE IN VARCHAR2)AS
  
EMPN VARCHAR2(30);
  
WAGE NUMBER(20);
  
C1 SYS_REFCURSOR;
  
BEGIN
  
OPEN C1 FOR SELECT FIRST_NAME, SALARY FROM EMPLOYEES WHERE EMPLOYEESEX=GENTEE;
  
LOOP
  
FETCH C1 INTO EMPN,WAGE;
  
    DBMS_OUTPUT.PUT_LINE('EMPLOYEE_NAME: ' || EMPN || ' SALARY: ' || WAGE);
  
EXIT WHEN C1%NOTFOUND;
  
END LOOP;
  
END EMPLOYEE_SALARY;
  
该语句的隐式游标方式:
  
CREATE OR REPLACE PROCEDURE EMPLOYEE_SALARY(GENTEE IN VARCHAR2) AS
  
R EMPLOYEES % ROWTYPE;
  
BEGIN
  
FOR R IN (SELECT FIRST_NAME || LAST_NAME EMPLOYEE_NAME, SALARY
  
            FROM EMPLOYEES
  
             WHERE EMPLOYEESEX = GENTEE) LOOP
  
    BEGIN
  
      DBMS_OUTPUT.PUT_LINE('EMPLOYEE_NAME: ' || R.EMPLOYEE_NAME ||
  
                           ' EMPLOYEE_SALARY: ' || R.SALARY);
  
    END;
  
END LOOP;
  
END EMPLOYEE_SALARY;


页: [1]
查看完整版本: Oracle存储过程学习