Sql 在触发器语句中选择
我有一个触发器:Sql 在触发器语句中选择,sql,oracle,select,triggers,Sql,Oracle,Select,Triggers,我有一个触发器: CREATE OR REPLACE TRIGGER TR_SIGHTING_DESC BEFORE INSERT ON sightings FOR EACH ROW BEGIN SELECT bird_name INTO bn from birds where bird_id = :new.bird_id; :new.description := 'A bird of the species ' || bn
CREATE OR REPLACE TRIGGER TR_SIGHTING_DESC
BEFORE INSERT ON sightings
FOR EACH ROW
BEGIN
SELECT bird_name
INTO bn
from birds
where bird_id = :new.bird_id;
:new.description := 'A bird of the species '
|| bn
|| ' was spotted in the '
|| :new.latitude || ','|| :new.longitude
|| ' part of the observation area';
END;
/
它一直说它是无效的。我试图从相应的ID中检索bird_name,例如,将其插入到sightings表中:
INSERT INTO sightings (spotter_id, bird_id, latitude,
longitude, sighting_date)
VALUES (2457, 901, -28.0, 152, '09-MAR-2016');
您必须声明变量
CREATE OR REPLACE TRIGGER TR_SIGHTING_DESC
BEFORE INSERT ON sightings
FOR EACH ROW
DECLARE bn birds.bird_name%type;
BEGIN
SELECT bird_name
INTO bn
from birds
where bird_id = :new.bird_id;
:new.description := 'A bird of the species '
|| bn
|| ' was spotted in the '
|| :new.latitude || ','|| :new.longitude
|| ' part of the observation area';
END;
/
好OL2200
在插入dn之前,必须先声明dn。标记所使用的dbms。(该代码看起来不像ANSI SQL。)您能分享错误的确切文本吗?未定义
bn
变量。请浏览一些basis plsql教程。