-1

我创建了一个名为密码的表

CREATE TABLE PASSWORD (USER_ID NUMBER(10)  CONSTRAINT  PASSWORD_USER_ID_PK PRIMARY KEY,
PASSWD   VARCHAR2(20) NOT NULL);

INSERT INTO PASSWD (USER_ID,PASSWD) VALUES (1,100);
INSERT INTO PASSWD (USER_ID,PASSWD) VALUES (2,200);

并在 Oracle 表单开发者 10g 中创建了登录表单。我将此代码用于登录按钮。

DECLARE
    CURSOR login_cursor IS
      SELECT user_id,
             passwd
      FROM   password;
    user_id_var password.user_id%TYPE;
    passwd_var  password.passwd%TYPE;
    login_flag  BOOLEAN := FALSE;
BEGIN
    OPEN login_cursor;

    <<check_records>>
    LOOP
        FETCH login_cursor INTO user_id_var, passwd_var;

        IF( :login_user_id = user_id_var
            AND :login_passwd = passwd_var ) THEN
          Message('You are in');

          login_flag := TRUE;

          exit check_records;
        END IF;

        EXIT WHEN login_cursor%NOTFOUND;
    END LOOP;

    CLOSE login_cursor;

    IF( NOT login_flag ) THEN
      Message('INVALID LOGIN');
    END IF;

    clear_form;
END; 

但错误信息出现

bad bind variable 'login_user_id'
bad bind variable 'login_passwd'

解决方案是什么?

4

1 回答 1

1

表单变量使用:block_name.item_name. 您正在使用:login_user_id的似乎缺少对块的引用,因此 Forms 无法引用该变量,并且似乎它是一个绑定变量,但事实并非如此。

更正引用变量的语法

于 2013-04-05T13:25:11.727 回答