Существует еще одна проблема с вашим кодом, не предложенным в комментариях: функция count
из select into
не вызовет исключение NO_DATA_FOUND
.Вы можете использовать условие IF
на счетчике или сделать что-то подобное, что является предпочтительным
CREATE OR REPLACE FUNCTION logga_in (
p_pnr bankkund.pnr%TYPE,
p_passwd bankkund.passwd%TYPE
) RETURN NUMBER AS
v_resultat NUMBER(1);
BEGIN
SELECT 1 --do not use count if you wish to handle no_data_found
INTO v_resultat FROM
bankkund WHERE pnr = p_pnr AND
passwd = p_passwd
AND ROWNUM = 1; --Add this
RETURN 1;
EXCEPTION
WHEN no_data_found THEN
RETURN 0;
END;
Теперь, что касается вызова процедуры, доступны различные опции, включая использование переменной связывания * 1008.*
VARIABLE p_pnr number --use the datatype of bankkund.pnr%TYPE
VARIABLE p_passwd VARCHAR2(10) --use the datatype of bankkund.passwd
SELECT logga_in(:p_pnr,:p_passwd) FROM dual;
Или переменная подстановки
SELECT logga_in('&p_pnr','&p_passwd') FROM dual;
При вводе введите данные.
Или используйте блок PL / SQL
DECLARE
v_res INT;
v_pnr bankkund.pnr%type := 12892; --or appropriate value
p_passwd bankkund.passwd%type := some_passwd';
BEGIN
v_res := logga_in();
If v_res = 1 THEN
do_something_u_want; --call or execute appropriate action.
END IF;
END;
/