• ベストアンサー

ストアド(PL/SQL)でログイン処理を行いたい

お世話になります。 ログイン処理をストアドで行いたいと考えております。 具体的には、IDとパスワードを入力後「OK」ボタン押し下時IDとパスワードを引数とするストアド(loginCheck())が呼ばれます。処理の流れは次のとおりです。 (1)「Aテーブル」内にIDが存在するかをチェック (2)なければー1を返す。あれば、存在するレコードに対し てパスワードが一致しているかをチェック (3)もしパスワードが一致していなければー1を返す  一致していれば0を返す。 以上のような機能を持つストアドを作成しようと考えています。サンプル等ございましたらよろしくお願いします。

noname#1752
noname#1752

質問者が選んだベストアンサー

  • ベストアンサー
  • sueoka
  • ベストアンサー率38% (24/62)
回答No.1

こんにちわ ストアドファンクションとかで良いのでしょうか? CREATE OR REPLACE FUNCTION loginCheck (  inUserID CHAR,  inPassword VARCHAR2 ) RETURN NUMBER IS  wPass VARCHAR(8); BEGIN  SELECT パスワード INTO wPass  FROM Aテーブル  WHERE ID = inUserID;  IF wPass <> inPassword THEN   RETURN (-1);  END IF;  RETURN (0); EXCEPTION  WHEN NO_DATA_FOUND THEN   RETURN (-1); END; 一応これをPL/SQL上から SELECT loginCheck('12345', '12345678') FROM DUAL; などと実行すると-1や0が返ってきますが・・・ もしかして、全然見当違いのこと書いてます? 「そんなんじゃないやいっ!」ってことだったら、ごめんなさい(笑 ※上のをそのままコピペすると全角文字が使われているので、 コンパイルできません。ご注意下さい。

関連するQ&A

  • ストアドプロシージャでトランザクション処理をするにはどうすれば良いので

    ストアドプロシージャでトランザクション処理をするにはどうすれば良いのでしょうか? 複数のテーブルの行をストアドプロシージャで一括削除したいのですが、 エラーが発生した場合は、ロールバックしたいと思っています。 たとえば、 create table A (id INT, name VARCHAR(32)); // idと名前を持つテーブルA create table B (id INT, address TINYTEXT); // idと住所を持つテーブルB の二つのテーブル(idで紐付け)で、 Aの行が削除されたらBの行を削除するが、Bの削除でエラーが出た場合はAの削除をロールバックする。 という処理を行いたいのです。(ロールバックが可能であれば、ストアドプロシージャでなくても構いません。) どのように書けば良いのでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • SQL、ストアドでのUPDATEのアドバイスを下さい。

    テーブルA、テーブルBがあってデータ更新の効率的な方法を探しています。 フィールドはそれぞれ、コード、名前、誕生日 があって、 データ、 ----------------------------- A  コードなし 名前 誕生日 B コードあり 名前 誕生日 でテーブルAに、テーブルBから名前と誕生日で一致するコードを検索 してテーブルAのコードに書き込みたい。 SQL、もしくはストアドプロシジャーで処理したいと思ってます。 処理件数は500前後です。 ストアドを試してみたのですが、コンパイル・エラーが出て上手くいきません。アドバイスをお願いします。

  • ADOからのストアド実行でエラーが発生します

    VB6のプログラムから、ストアドを実行すると エラー 3704(オブジェクトが閉じている間は操作が許可されない)が発生します。 ストアドの内容は次のとおりです 1.あるテーブルの中から条件に一致するレコードを取得し、一時テーブルに格納する 2.一時テーブルを先頭から1行ずつ読み、各レコードの値を使用して別のテーブルへ更新 上記内容を、一時テーブルではなくカーソルを使用するとうまくいきます。 同じような経験をされた方、対処法などご存知でしたら教えてください。

  • ユーザー認証でSQLのデータと一致するものだけをログインできるようにするには

    PHP初心者です。 タイトルが長くなり、申し訳ありません。 ユーザーのBASIC認証ダイアログを表示させ、データベースのテーブルに書かれたデータと一致するものだけをログインできるようにするにはどうしたら良いでしょうか。 まずデータベースにあるテーブルからIDとパスワードを抽出します。 でも、この場合変数は配列になりますよね。 その配列の変数の宣言の書き方とデータ照合を一致させる方法を知りたくて質問しました。 どうぞ宜しくお願い致します。

    • 締切済み
    • PHP
  • ログインについて

    ログインしようしても 「ご入力頂いたユーザID、ログインパスワードが一致しておりません。」となって、ログイン出来ません。 「ユーザーIDを忘れた場合はこちら」とかをやってもダメです。

  • PHPでSQLの中にSQLという記述はできますか?

    PHPでログイン画面で入力されたIDからユーザーNOを割り出し、商品テーブルにあるユーザーNOが一致する商品だけを絞り出すSQLを組みたいです。 ユーザーテーブル ユーザーNO、ユーザーID、パスワード 商品テーブル 商品名、ユーザーNO、数量 商品テーブルのsqlのwhereの中に、もうひとつsplをいれるようなことできますか? 例えばユーザーIDがyamadaの検索結果でたユーザーnoで商品テーブルのユーザーnoが一致するものを表示です よろしくお願いします

    • ベストアンサー
    • MySQL
  • Access:キャンセルボタンでログイン用フォームを閉じられない

    Access2000、Windows2000を使っています。 とあるログイン用のフォームに、ID入力用テキストボックス、パスワード 入力用テキストボックス、ログインボタン、キャンセルボタンを実装して います。IDとパスワードの入力においてチェックしている事は、 A:空白(未入力)だとダメ←ログインボタンのクリック時にチェック B:入力文字数が8文字以上15文字以下だとOK←各テキストボックスの                   フォーカス喪失時にチェック C:IDとパスワードが、とあるテーブルに登録してあればOK←ログインボタンの                        クリック時にチェック 以上のようなチェックですと、Bの入力文字数が8文字以上15文字以下かどうか のチェックでOKでなかった場合、入力文字数が正しく入力されるまで、 キャンセルボタンを押せません。Tabキーは効かない状態になり、マウス動作でキャンセルボタンにポインタを移動できますが、使えない状態です。 AとCのチェックでひっかかった場合は、キャンセルボタンは使えます。 入力文字数が正しくない場合、各テキストボックスにフォーカスをあてた 状態を保ちつつ、キャンセルボタンのみ使用できる・・・という処理は、 可能でしょうか? どなたか、よろしければ、ご指導おねがいいたします。

  • javascript を用いたログイン処理

    ログイン画面(1)でログインIDとパスワードを入力し、ログインボタンを押下します。 システムAにてログイン認証処理を行います。 ログイン後の画面はTOP画面(1)を表示します。 特定のユーザのみ、システムBにログイン認証処理を受渡し、 ログイン後の画面、TOP画面(2)を表示します。 (システムBでのログイン承認処理には、通常ログイン画面(2)からID、PWを入力しますが、 ログイン画面(1)にてID、PWを入力した場合、ログイン画面(2)は表示しません) 言葉だけで申し訳ありません。 上記のようなログイン処理システムをJavaScriptを使用して作成したいのですが、 何か参考になるサイトなど教えていただけないでしょうか。宜しくお願いします。

  • SQLの書き方

    はじめまして SQL Serverを使用していますが、下記のSQLの書き方がわかりません。 申し訳けありませんが、わかる方がいらっしゃいましたら、どなたか教えて下さい。 ◆質問 テーブル1とテーブル2の下記のKEYで結合させて、取り出した結果でテーブル3を更新したいです。 テーブル2はデータが複数件一致してしまうため、無条件に先頭の1レコードだけを取り出したいです。 取得できたテーブル2のid_1とid_2とid_3をテーブル3に書き出したいです。 ○KEY テーブル1.test = テーブル2.test and テーブル1.test1 = テーブル2.test1 テーブル1.id_2 = テーブル3.id_1 and テーブル1.id_3 = テーブル3.id_2 ○テーブル1 id_1   id_2   id_3   test   test1 bbb   000001   001   000001  100 bbb   000002   001   000002  100 ○テーブル2 id_1   id_2   id_3   test   test1 aaa    1    99    000001   100 ← このレコードを取り出したい aaa    2    99    000001   100 aaa    3    99    000003   100 aaa    4    99    000004   110 ○テーブル3 id_1   id_2   id_3 000001  001  aaa-1-99   ←id_3にテーブル2で取得できたid1 + id2 + id3を書き出したい 000002  001 夜遅くにすみませんがお願いします。

  • SQLのバッチ処理

    いつもお世話になっています。 題名とおり、MYSQLのバッチ処理の作成についておききしたいのですが 、現在、バッチ処理でMysqlを起動、ログイン、データベースを新規で作成まではできているのですが、新規で作成したデータベースを使いそのデータベースに複数のテーブルの追加をしたいのですが、可能でしょうか?HPも調べたのですが、見つかりませんでした。サンプルやこのHPはわかりやすいなどがありましたら教えていただきたいのでよろしくお願いします。