質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.75%

  • PL/SQL

    59questions

    PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。

SELECT INTO 文

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 478

前提・実現したいこと

OracleのSELECT INTO 文を用いて、値を取得しようと考えています。
その際、下記SQL文を流すと、次のようなエラーが出ます。

解決方法を伺えればと思います。

以上、よろしくお願い致します。

発生している問題・エラーメッセージ

        v_user_id ora03.user_id%TYPE;
                          *
行2でエラーが発生しました。:
ORA-06550: 行2、列20:
PLS-00201: 識別子ORA03.USER_ACCOUNT_IDを宣言してください。
ORA-06550: 行2、列20:
PL/SQL: Item ignored
ORA-06550: 行3、列13:
PLS-00201: 識別子ORA03.LOCK_FLGを宣言してください。
ORA-06550: 行3、列13:
PL/SQL: Item ignored
ORA-06550: 行6、列41:
PLS-00320: この式の型の宣言が不完全か、または形式が誤っています。
ORA-06550: 行6、列72:
PL/SQL: ORA-00904: : 無効な識別子です。
ORA-06550: 行6、列2:
PL/SQL: SQL Statement ignored
ORA-06550: 行10、列46:
PLS-00320: この式の型の宣言が不完全か、または形式が誤っています。
ORA-06550: 行10、列2:
PL/SQL: Statement ignored

該当のソースコード

SQL> set serveroutput on
SQL> declare
  2     v_user_id ora03.user_id%TYPE;
  3     v_lock_flg ora03.lock_flg%TYPE;
  4     v_sql VARCHAR(1000);
  5  begin
  6     SELECT user_id , lock_flg INTO v_user_id , v_lock_flg FROM account_table WHERE user_id =
 '10001';
  7  -- v_sql := 'select * from account_table where user_id = '
  8  -- || v_user_id ;
  9
 10     DBMS_OUTPUT.PUT_LINE('user_id :' || v_user_id || 'lock_flg :' || v_lock_flg);
 11  -- execute immediate v_sql;
 12  end;
 13  /

試したこと

ユーザーを作成する際、下記SQL文を発行しております。

CREATE USER ora03
IDENTIFIED BY "●●●●●"
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp

GRANT DBA TO ora03 ;
GRANT UNLIMITED TABLESPACE TO ora03 ;

今回エラーが出た際、権限が不足している可能性を考慮し、
以下の権限を付与したのですが、同じエラーが生じます。

grant CONNECT
,RESOURCE
,DBA
,EXP_FULL_DATABASE
,IMP_FULL_DATABASE
,DELETE_CATALOG_ROLE
,EXECUTE_CATALOG_ROLE
,SELECT_CATALOG_ROLE
to ora03
;

補足情報(言語/FW/ツール等のバージョンなど)

Oracle Database Express Edition 11g Release 2

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

v_user_id ora03.user_id%TYPE;

ora03 ってスキーマ名だと思われているようですが、
%TYPE属性と%ROWTYPE属性を参考にすると

v_user_id account_table.user_id%TYPE;

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/05 23:52

    おっしゃる通り、表名ではなくスキーマ名でオブジェクトの指定をしようとしておりました。
    おかげさまで無事プロシージャを正常に実行することができました。

    リンク付きで分かりやすくご返信いただき、本当にありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    Oracleのダイレクトロードインサートについて

    ダイレクトロードインサートを使ってselect insertを行おうと思っています insert /*+ APPEND */ into tmp_table ( select

  • 解決済

    DBのテーブルそのものを配列に入れたい

    ターミナルで下記コマンドで、そのDBのテーブルが何という名前で何個あるかがみれます。 show tables; これをPHP上で行いたいのです。 イメージではこん

  • 受付中

    EntityFrameworkにおいてのSelectについて

    お世話になります。 探し方が悪いとは思うのですが行きつきませんでしたので質問させてください。 EntityFrameworkにおいてのSelectについてなのですが、パラメ

  • 受付中

    MySQL : insertがうまくいかない

    PHPからMySQLに接続し、何個かテスト用にデータをinsertしようとしました。 function debugPrint($var) { echo '<pre>';

  • 解決済

    "Username already exists"と表示したい

    登録画面で、クエリーエラーがあると、Couldn't execute queryと表示されるようになっています。これはきちんと機能しています。 が、ユーザーが入力をし、例えば

  • 受付中

    sqlで結合するとエラー

    二つのテーブルにそれぞれに結合作業をしたいです from test1 , test2 inner join contents A

  • 解決済

    1行のINSERT文で複数行挿入する

     前提・実現したいこと 1回ずつINSERT文でデータを挿入するのではなく、1回のINSERT文で複数のデータを挿入できるようにしたいです。  発生している問題・エラーメッセー

  • 解決済

    SpringBootとJPAでOracleのSQLエラー(例外)を取得したい

     前提・実現したいこと SpringBootとJPAでOracleのデータ登録(Insert)を作っています。 実行時にSQLのエラーがあったとき、その例外を取得したいのです。

同じタグがついた質問を見る

  • PL/SQL

    59questions

    PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。