-1
Windows環境でOracle 11gを使用しています。私は完全なPL/SQL開発者ではありません。私の状況はこのようなものです。PL/SQLでレコード型を関数入力として検証する方法
私はパッケージを使用しているため、ログインユーザーを検証する必要があります。これを行うには直接テーブルの列をチェックしないでください。
create or replace package Configuration_pkg as
TYPE user_rec IS RECORD
(email VARCHAR2(120),
password VARCHAR2(120));
TYPE user_tab IS TABLE OF user_rec INDEX BY BINARY_INTEGER;
function Validate_logged_user (p_user_tab IN user_tab) RETURN VARCHAR2;
end Configuration_pkg;
create or replace package body Configuration_pkg as
function Validate_logged_user (p_user_tab IN user_tab) RETURN VARCHAR2 IS
Ismatching number;
begin
select count(1)
into Ismatching
from CG_M_USERS
where username = user_tab.email
and password = user_tab.password;
if Ismatching = 0 then
return 'Invalid username/password';
elsif Ismatching = 1 then
return 'Login successful';
end if;
end Validate_logged_user;
end Configuration_pkg;
私は
Error(10,20): PL/SQL: ORA-00904: "USER_TAB"."PASSWORD": invalid identifier
Error(10,29): PLS-00302: component 'PASSWORD' must be declared
は、私が直接ではなく、テーブルからユーザー名とパスワードをチェックし、レコードタイプで渡された値を持つユーザーを検証したい、次のエラーを取得しています。みんなの助けが高く評価されています。
使用パラメータ名 - '代わりに無関係user_tab' –
'のp_user_tab'が、あなたの 'CG_M_USERS'テーブルはクリアテキストのパスワードを保持し、本当に悪いセキュリティリスクのように思えます。ユーザーを検証するビジネスから抜け出せない場合(つまり、外部サービスに認証を委任することによって)、塩漬けの安全なハッシュを格納する方がはるかに優れています。 –
なぜここにレコードの配列が必要ですか? –