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

select查询的结果不能作为存储过程的实参么?
SQL code

写了一个存储过程,向一个emp表中插入数据。。如果用如下调用是可以执行的。
DECLARE
  L_EMPNO  EMP.EMPNO%TYPE;
  L_DEPTNO DEPT.DEPTNO%TYPE;
BEGIN

  SELECT MAX(EMPNO) + 1 INTO L_EMPNO FROM EMP;
  SELECT DEPTNO INTO L_DEPTNO FROM DEPT WHERE ROWNUM = 1;
  PRO_INSERT_TAB_EMP(L_EMPNO,
                     'yc',
                     'xx',
                     12,
                     '20120213',
                     123,
                     123,
                     L_DEPTNO);
END;

--但是我想少些一些代码,直接把select查询的值返回作为存储过程的实参。但报错
--下面的报错

BEGIN
  PRO_INSERT_TAB_EMP((SELECT MAX(EMPNO)+1 FROM EMP), 'yc', 'xx', 'xx', '2012213', 123, 123, 10)
END;





------解决方案--------------------
是不是最大的有几个值 返回多个了?
------解决方案--------------------
不可以,PL/SQL不支持这种类似闭包操作。