日期:2014-05-17  浏览次数:20814 次

PL/sql 语法问题?
SQL code

 CREATE OR REPLACE PROCEDURE 
 find_emp2(emp_no NUMBER)
 AS
 BEGIN
   SELECT *  FROM EMP WHERE empno = emp_no;
 EXCEPTION
   WHEN NO_DATA_FOUND THEN
     DBMS_OUTPUT.PUT_LINE ('雇员编号未找到');
 END find_emp2;


在T_SQL很容易实现的东西. 到PL/sql 为什么报错!

------解决方案--------------------
存储过程中select 要into个东东

你sql返回的是一组值,可以用table类型接收或用游标


------解决方案--------------------
探讨
我就想返回一组值. 难到要这么复杂? 前台开发只要筛选后的值.

------解决方案--------------------
SQL code

CREATE OR REPLACE PROCEDURE 
find_emp2(emp_no NUMBER) 
a number; 
AS 
BEGIN 
  SELECT empno into a FROM EMP WHERE empno = emp_no and rownum = 1;---这里可能会有找到多条记录的情况,也会导致错误所以加个rownum取第一个 
EXCEPTION 
  WHEN NO_DATA_FOUND THEN 
    DBMS_OUTPUT.PUT_LINE ('雇员编号未找到'); 
END find_emp2;

------解决方案--------------------
单独的select要用select into的形式
如果是想返回一个结果集,那么最好把结果集放到标签里
CURSOR C_CUR IS SELECT * FROM EMP WHERE empno = emp_no;