[英]SELECT statement in PL/SQL Trigger returns null
A colleague (with limited PL/SQL skills to match mine.) is trying to create a trigger the backend of an (Oracle-based) ERP system.一位同事(我的 PL/SQL 技能有限。)正在尝试创建一个触发器(基于 Oracle 的)ERP 系统的后端。 He's simplified the problem for me with the following samples.
他通过以下示例为我简化了问题。
In short, he has a select statement that renders the expected result:简而言之,他有一个 select 语句,它呈现了预期的结果:
SELECT TO_CHAR(MAX(
RESULT_KEY))
FROM IFSINFO.QUOTATION_REPORTS
WHERE QUOTATION_NO = 'G1002387'
...but when included in a trigger is appears to return null: ...但是当包含在触发器中时似乎返回 null:
CREATE OR REPLACE TRIGGER VMO_QUOTATION_LINK
BEFORE INSERT OR UPDATE
ON VMO_OPPORTUNITY_LINE
FOR EACH ROW
DECLARE
QuotationLink VARCHAR2(255);
BEGIN
SELECT TO_CHAR(MAX(RESULT_KEY))
INTO QuotationLink
FROM IFSINFO.QUOTATION_REPORTS
WHERE QUOTATION_NO = 'G1002387';
:NEW.URL5 := QuotationLink;
END;
I'm no expert, but on the face of it, it seems OK.我不是专家,但从表面上看,这似乎还可以。 Can anyone advise?
任何人都可以建议吗?
Is there an alternative approach I can try?有没有我可以尝试的替代方法? And further suggestions on how to debug this?
以及有关如何调试的进一步建议?
create table quotation_reports (quotation_no varchar2(30), result_key number);
insert into quotation_reports values ('G1002387', 1);
insert into quotation_reports values ('G1002387', 10);
SQL> select to_char(max(result_key)) from quotation_reports where quotation_no = 'G1002387';
TO_CHAR(MAX(RESULT_KEY))
----------------------------------------
10
create table vmo_opportunity_line(url5 varchar2(300), test_column varchar2(100));
CREATE OR REPLACE TRIGGER VMO_QUOTATION_LINK
BEFORE INSERT OR UPDATE ON VMO_OPPORTUNITY_LINE
FOR EACH ROW
DECLARE
QuotationLink VARCHAR2(255);
BEGIN
SELECT TO_CHAR(MAX(RESULT_KEY)) INTO QuotationLink
FROM QUOTATION_REPORTS
WHERE QUOTATION_NO = 'G1002387';
:NEW.URL5 := QuotationLink;
END;
insert into vmo_opportunity_line(test_column) values ('A');
select * from vmo_opportunity_line;
URL5 TEST
----- ------
10 'A'
This sample works fine.此示例工作正常。 I don't see anything wrong.
我看不出有什么不对。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.