我正在尝试创建PL / SQL过程。但它没有正常工作。请查看代码并就此提出建议。
CREATE OR REPLACE PROCEDURE TEST IS
DECLARE
EMPLOYEENUM EMPLOYEE.E#%type;
EMPLOYEENAME EMPLOYEE.NAME%type;
NUMRECORDS NUMBER(2);
BEGIN
SELECT EMP.E# INTO EMPLOYEENUM ,EMP.NAME INTO EMPLOYEENAME
FROM EMPLOYEE EMP
WHERE EXISTS
(SELECT * FROM MECHANIC, DRIVER
WHERE EMP.E# = DRIVER.E#
AND EMP.E# = MECHANIC.E#);
SELECT COUNT(*) INTO NUMRECORDS
FROM (
SELECT EMP.E#,EMP.NAME
FROM EMPLOYEE EMP
WHERE EXISTS
(SELECT * FROM MECHANIC, DRIVER
WHERE EMP.E# = DRIVER.E#
AND EMP.E# = MECHANIC.E#));
IF (NUMRECORDS > 0) THEN
DBMS_OUTPUT.PUT_LINE('ERROR: CANNOT MAKE MORE THEN 2 TRIPS PER DAY');
ROLLBACK;
ELSE
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
ROLLBACK;
END VERIFY;
我确信我不需要再次运行代码来查看行数。我知道有一些叫做
的东西SQL%ROWCOUNT
返回行数。请告知如何使用它。
答案 0 :(得分:1)
您可以使用IDE并进行编译以查看其失败的位置。如果你试图在SQLPLUS中编译它,你只看到"编译错误"消息,键入显示错误,您将看到错误。我仍然会推荐像sql developer这样的IDE。
以下是我可以看到的一些问题......
SELECT EMP.E# INTO EMPLOYEENUM ,EMP.NAME INTO EMPLOYEENAME
:您应首先列出所有列,然后列出变量名称。它应该是SELECT EMP.E#,EMP.NAME INTO EMPLOYEENUM, EMPLOYEENAME
更多背景信息和更多错误信息将非常有用。
答案 1 :(得分:0)
有一些问题......
如果您可以提供“机械师”和“驱动程序”的表格结构,那么我可以向您发送可能对您有用的代码。
感谢。