问题描述
我正在使用Oracle 12C。
到目前为止,我所有的存储过程都在过去的6个月中正常工作,但是从今天开始,其中一些无法正常工作。
Use Case-1
Expectation:
下面的语句将毫无错误地工作-
Actual:
是的,它起作用了。Oracle正在生成标识列的id。
Use Case-2
Expectation:
下面的语句将毫无错误地工作-
Actual:
不,现在不起作用了。它两天前就起作用了。
我在尝试执行过程时收到以下异常-
到目前为止,我所有的存储过程都在过去的6个月中正常工作,但是从今天开始,其中一些无法正常工作。
create table Table1 ( ID NUMBER generated by default on null as identity constraint FGEN_PAY_FLEX_PK primary key, CARD_NO VARCHAR2(19) not null );
Use Case-1
Expectation:
下面的语句将毫无错误地工作-
Insert Into Table1(Card_No) value('12345');Actual:
是的,它起作用了。Oracle正在生成标识列的id。
Use Case-2
Expectation:
下面的语句将毫无错误地工作-
create PROCEDURE MY_SAMPLE_PROCEDURE(I_CARD_NUMBER IN VARCHAR2)
AS
BEGIN
INSERT into Table1 (Card_No)
select '12345' FROM DUAL;
END LOAD_SINGLE_PAYFLEX_DATA;
/
declare
I_CARD_NUMBER VARCHAR2(100) := '12345';
begin
MY_SAMPLE_PROCEDURE(
I_CARD_NUMBER=> I_CARD_NUMBER
);
end;
Actual:
不,现在不起作用了。它两天前就起作用了。
我在尝试执行过程时收到以下异常-
ORA-01400: cannot insert NULL into ("STATEMENT"."Table1"."ID") 专家解答
在我看来很好...
No, it's not working now. It worked 2 days ago.
那么发生了什么变化?
create table table1 (
id number generated by default on null as identity
constraint fgen_pay_flex_pk
primary key,
card_no varchar2(19) not null
);
create or replace procedure my_sample_procedure(i_card_number in varchar2)
as
begin
insert into table1 (card_no)
select '12345' from dual;
end my_sample_procedure;
/
declare
i_card_number varchar2(100) := '12345';
begin
my_sample_procedure(
i_card_number=> i_card_number
);
end;
/
select * from table1;
ID CARD_NO
1 12345 No, it's not working now. It worked 2 days ago.
那么发生了什么变化?
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




