有三个表,钢管表,原料表,子管表原料表有字段:钢管号,钢管重量
钢管表有字段:钢管号,钢管长度
子管表有字段:子管号,对应钢管号,子管长度,子管重量
其中,原料表中的钢管号、钢管表中的钢管号与了管表中的对应钢管号相同。要求,在输入子管长度时,根据钢管重量、子管长度与对应钢管长度的比例,计算出子管的重量并写入数据库。我写了一个触发器来实现,如:CREATE OR REPLACE TRIGGER GMAN.GANGGUAN
BEFORE INSERT
ON GMAN.子管表
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
:NEW.子管重量 :=SELECT ROUND((:NEW.子管长度/PT.钢管长度)*ST.钢管重量,2) FROM 钢管表 PT,原料表 ST WHERE PT.钢管号=:NEW.对应钢管号 AND ST.钢管号=:NEW.对应钢管号;
END;出错提示:
4/21 PLS-00103: 出现符号 "SELECT"在需要下列之一时:
( - + case mod new not
null <an identifier> <a double-quoted delimited-identifier>
<a bind variable> avg count current exists max min prior sql
stddev sum variance execute forall merge time timestamp
interval date
<a string literal with character set specification>
<a number> <a single-quoted SQL string> pipe
<一个带有字符集说明的可带引号的字符串文字>
<一个可带引号的 SQL 字符串>
5/1 PLS-00103: 出现符号 "END"请高手帮忙,
或是提供解决“要求,在输入子管长度时,根据钢管重量、子管长度与对应钢管长度的比例,计算出子管的重量并写入数据库。”的方法也可。
拜托,拜托,急
钢管表有字段:钢管号,钢管长度
子管表有字段:子管号,对应钢管号,子管长度,子管重量
其中,原料表中的钢管号、钢管表中的钢管号与了管表中的对应钢管号相同。要求,在输入子管长度时,根据钢管重量、子管长度与对应钢管长度的比例,计算出子管的重量并写入数据库。我写了一个触发器来实现,如:CREATE OR REPLACE TRIGGER GMAN.GANGGUAN
BEFORE INSERT
ON GMAN.子管表
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
:NEW.子管重量 :=SELECT ROUND((:NEW.子管长度/PT.钢管长度)*ST.钢管重量,2) FROM 钢管表 PT,原料表 ST WHERE PT.钢管号=:NEW.对应钢管号 AND ST.钢管号=:NEW.对应钢管号;
END;出错提示:
4/21 PLS-00103: 出现符号 "SELECT"在需要下列之一时:
( - + case mod new not
null <an identifier> <a double-quoted delimited-identifier>
<a bind variable> avg count current exists max min prior sql
stddev sum variance execute forall merge time timestamp
interval date
<a string literal with character set specification>
<a number> <a single-quoted SQL string> pipe
<一个带有字符集说明的可带引号的字符串文字>
<一个可带引号的 SQL 字符串>
5/1 PLS-00103: 出现符号 "END"请高手帮忙,
或是提供解决“要求,在输入子管长度时,根据钢管重量、子管长度与对应钢管长度的比例,计算出子管的重量并写入数据库。”的方法也可。
拜托,拜托,急
汗....是ORACLE的话
用SELECT ROUND() INTO 变量 FROM
语法错误...
referencing new as newdata
for each row
DECLARE lr_applicationuserid NUMBER(15);
lr_instid NUMBER(15);
begin
if Upper(user) != 'SPECTWOREPLENG' then
select getapplicationuserid() into lr_applicationuserid FROM DUAL;
:newdata.UserIDLastUpdated := lr_applicationuserid;
select GetCurrentInstallation() into lr_instid FROM DUAL;
:newdata.UpdateSite := lr_instid;
:newdata.ExportMarker := 1;
:newdata.LastUpdated := SYSDATE;
end if;
end;
/
例子
推荐一本书:精通Oracle 10g PL/SQL编程
CREATE OR REPLACE TRIGGER GMAN.GANGGUAN
BEFORE INSERT
ON GMAN.子管表
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
SELECT ROUND((:NEW.子管长度/PT.钢管长度)*ST.钢管重量,2) into :NEW.子管重量 FROM 钢管表 PT,原料表 ST WHERE PT.钢管号=:NEW.对应钢管号 AND ST.钢管号=:NEW.对应钢管号;
END;