我想创建一个程序在一个表中插入值。我的表具有某些字段的默认值。我需要在我的过程中使用相同的默认值,而无需在我的过程中手动输入它。例如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'。其次,PL/SQL变量不能继承表的列的默认值。为了在插入时为列指定一个默认值,可以省略它或在'insert into'语句的'values()'子句中使用'default'关键字。 –
@NicholasKrasnov谢谢。我正在使用最佳做法,如stock products.stock%type,命名我的约束并在需要时向列名添加注释。为了消除混乱,我在这里省略了它们。所以默认值不能被继承。好。 – uutsav