在Oracle Forms中遇到“Bad Bind Variable”

时间:2013-09-17 11:03:16

标签: sql oracle plsql oracleforms

我是oracle的新手,我正在做同样的项目 我有以下代码,我想将变量'wid'存储到下一步,但遗憾的是我收到错误

  

错误的绑定变量。

我该怎么办呢?任何帮助将受到高度赞赏

代码:

DECLARE
  U_ID VOTERS.V_ID%TYPE;
  PASS VOTERS.PASSWORD%TYPE;
  CURSOR LOGIN_CUR IS
  SELECT V_ID,PASSWORD FROM VOTERS;

BEGIN
  SELECT W_ID INTO :WID FROM VOTERS WHERE V_ID=:V_ID;
  BEGIN
    OPEN LOGIN_CUR;
    LOOP
      FETCH LOGIN_CUR INTO U_ID,PASS;
      IF :V_ID=U_ID AND :PASSWORD=PASS THEN
        OPEN_FORM ('........');
        EXIT WHEN LOGIN_CUR%FOUND;

      END IF;
    END LOOP;
    CLOSE LOGIN_CUR;
  END;
END;

1 个答案:

答案 0 :(得分:0)

'坏绑定变量'的原因在于:

  

IF:V_ID = U_ID AND:PASSWORD = PASS

为了解决您的问题,您应该删除“:”,以便您的查询应该像这样

  

IF V_ID = U_ID AND PASSWORD = PASS

您已经将数据插入变量中,因此无需再次使用“:”。

DECLARE
U_ID VOTERS.V_ID%TYPE;
PASS VOTERS.PASSWORD%TYPE;
CURSOR LOGIN_CUR IS
SELECT V_ID,PASSWORD FROM VOTERS;

  BEGIN
  SELECT W_ID INTO WID FROM VOTERS WHERE V_ID=V_ID;
  BEGIN
 OPEN LOGIN_CUR;
 LOOP
 FETCH LOGIN_CUR INTO U_ID,PASS;
IF V_ID=U_ID AND PASSWORD=PASS THEN
OPEN_FORM ('........');
EXIT WHEN LOGIN_CUR%FOUND;

END IF;
 END LOOP;
CLOSE LOGIN_CUR;
END;
END;

编辑---

你的光标应该与此类似,这个工作没有错误,如果你有任何疑问请问:


  DECLARE
   U_ID NUMBER(20);
  PASS VARCHAR2(30);
  WID NUMBER(20);
  A NUMBER(20);
  CURSOR LOGIN_CUR IS
    SELECT id INTO A FROM voters;


 BEGIN
 SELECT T_ID INTO WID FROM voters WHERE T_ID = A;
   BEGIN
   OPEN LOGIN_CUR;
  LOOP
  FETCH LOGIN_CUR INTO U_ID;
 IF WID=U_ID THEN
  OPEN_FORM ('........');
   EXIT WHEN LOGIN_CUR%FOUND;

 END IF;
END LOOP;
CLOSE LOGIN_CUR;
END;
 END;