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

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

新規登録して質問してみよう
ただいま回答率
85.50%
PL/SQL

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

Q&A

解決済

1回答

2701閲覧

SELECT INTO 文

t_yoshida0813

総合スコア13

PL/SQL

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

0グッド

0クリップ

投稿2017/09/04 16:23

###前提・実現したいこと
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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

v_user_id ora03.user_id%TYPE;

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

v_user_id account_table.user_id%TYPE;

投稿2017/09/04 18:32

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t_yoshida0813

2017/09/05 14:52

おっしゃる通り、表名ではなくスキーマ名でオブジェクトの指定をしようとしておりました。 おかげさまで無事プロシージャを正常に実行することができました。 リンク付きで分かりやすくご返信いただき、本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問