テーブルに値を挿入するプロシージャを作成したいとします。私のテーブルには、特定のフィールドのデフォルト値があります。手動で手作業で入力することなく、私の手続きで同じデフォルトをしたい。例えば挿入時にプロシージャのデフォルトパラメータでテーブルの既定値を使用するPLSQL
create table products
(
prod_id number primary key,
stock number default 0
);
マイプロシージャ宣言:
create procedure insert_product
(
prod_id number,
stock number default products.stock.default
);
しかし、私は得る:
エラー(58,99):PLS-00103:発生しましシンボル "DEFAULT" 一つを期待するとき以前の現在の削除が存在します。続行するには、 "DEFAULT"の前に記号 "を挿入しました。
私が試した:
stock number default);
stock number default products.stock);
をしかし、彼らはあまりにもエラーを与えます。プロシージャで明示的に入力せずに、プロシージャによって表のデフォルト値にアクセスできますか?私は知っている
stock number default 0);
うまくいきます。
私はPLSQLの初心者ですので、愚かな質問の場合は私を許してください。
まず、変数がテーブルの列と同じデータ型であるためには、次のように宣言します。 'var_name table.column_name%type'。第2に、PL/SQL変数は表の列のデフォルト値を継承できません。挿入時にカラムをデフォルト値にするためには、 'insert into'文の' values() '節に' default'キーワードを使用するか、省略してください。 –
@NicholasKrasnovありがとうございます。私はストックプロダクトのようなベストプラクティスを使用していました.stock%type、制約の名前を付けたり、必要に応じてカラム名にコメントを追加したりしていました。私はここでそれらを取り除き、混乱を取り除いた。したがって、デフォルトは継承できません。 OK。 – uutsav