1

我正在尝试编译这个包体:

CREATE OR REPLACE PACKAGE BODY package_1 AS
PROCEDURE procedure_1 (P_HOST IN VARCHAR2, P_USER IN VARCHAR2, P_NAME IN VARCHAR2)
IS
BEGIN
SELECT HOSTNAME, USERS, PS_NAME 
INTO P_HOST, P_USER, P_NAME
FROM PS_COLLECT
WHERE NOT EXISTS
( 
    SELECT HOSTNAME, USERS, PS_NAME
    FROM PS_MASTER
    WHERE PS_MASTER.HOSTNAME = PS_COLLECT.HOSTNAME 
    AND PS_MASTER.USERS = PS_COLLECT.USERS 
    AND PS_MASTER.PS_NAME = PS_COLLECT.PS_NAME
 );
END procedure_1;
END package_1;

但我收到了这个错误

The symbol "(" was substituted for "VARCHAR2" to continue.

我是一个新手 int PL/SQL ..请帮助 :)

4

1 回答 1

0

我不希望这会导致您看到的确切错误,但是您的代码的一个明确问题是您正在IN为参数指定模式,然后尝试在过程中为它们分配值。看起来您应该将OUT所有三个参数的模式更改为(在标题和正文中)。

如果仅此一项不能解决您的问题,我建议发布 CREATE PACKAGE 和 CREATE PACKAGE BODY 语句的修改文本。

于 2013-06-03T02:02:43.043 回答