Я пытаюсь получить идентификационный номер пользователя на основе его идентификатора сети, но по какой-то причине, когда я пытаюсь передать его идентификатор сети в предложении WHERE
оператора SELECT
в этом PL / SQL I получить ошибку.
Однако, если я вывожу то, что в user_rec.USER_NAME
, на консоль, будет допустимое значение, и если я жестко закодирую строку ex: WHERE UserID = 'USERNAME'
, она также будет работать как ожидалось. Кажется, что он не работает только для строковых переменных в предложении WHERE
.....?
ORA-01403: no data found
ORA-06512 at line 12
01403.00000 - "no data found"
*Cause
*Action
Error at line 1
PL / SQL:
DECLARE
v_addressbooknum number;
v_addresstype nchar(3);
CURSOR SELECT_PORTALUSERS is
SELECT USER_NAME FROM PERSONS WHERE DEFAULT_GROUP <> 'Employees';
BEGIN
FOR user_rec IN SELECT_PORTALUSERS LOOP
-- Fetch Address Book # based on user ID
SELECT ABNum INTO v_addressbooknum
FROM OWNER.TABLE@DBLINK
WHERE UserID = user_rec.USER_NAME;
END LOOP;
END;
=============================================== ======================
EDIT
Вот новый PL / SQL, который я запустил на основе предложения DCookie
DECLARE
v_addressbooknum number;
v_addresstype nchar(3);
CURSOR SELECT_PORTALUSERS is
SELECT USER_NAME FROM PERSONS WHERE DEFAULT_GROUP <> 'Employees';
BEGIN
FOR user_rec IN SELECT_PORTALUSERS LOOP
-- DEBUG --
DBMS_OUTPUT.PUT_LINE('DEBUG Found User: ' || user_rec.USER_NAME);
-- END DEBUG --
BEGIN
-- Fetch Address Book # based on user ID
SELECT ABNum INTO v_addressbooknum
FROM OWNER.TABLE@DBLINK
WHERE UserID = user_rec.USER_NAME;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('User: '||user_rec.USER_NAME);
END;
END LOOP;
-- DEBUG --
DBMS_OUTPUT.PUT_LINE('DONE');
-- END DEBUG --
END;
А вот вывод, который я получаю, вы можете увидеть, находит ли значения в user_rec.user_name
. И если я жестко закодировал один из идентификаторов пользователей, найденных в предложении where, он работает должным образом (то есть идентификаторы пользователей существуют в таблице, для которой выполняется выборка).
DEBUG Found User: USER846
User: USER846
DEBUG Found User: USER241
User: USER241
DEBUG Found User: USER780
User: USER780
DEBUG Found User: USER783
User: USER783
DEBUG Found User: USER294
User: USER294
DONE