我是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;
答案 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;