用于根据引用更新某些行的Oracle存储过程
我有两个表相互引用:用于根据引用更新某些行的Oracle存储过程,oracle,oracle10g,Oracle,Oracle10g,我有两个表相互引用: CREATE TABLE a ( AID INTEGER PRIMARY KEY ) ; / CREATE TABLE B ( PO INTEGER, BID INTEGER PRIMARY KEY, ALINK INTEGER ) ; / ALTER TABLE B ADD FOREIGN KEY (ALINK) REFERENCES A (AID) / 我需要PL/SQL过程,该过程将根据A中引用的行数更新表B中的某些行。我尝试过类
CREATE TABLE a (
AID INTEGER PRIMARY KEY
) ;
/
CREATE TABLE B (
PO INTEGER,
BID INTEGER PRIMARY KEY,
ALINK INTEGER
) ;
/
ALTER TABLE B ADD
FOREIGN KEY (ALINK) REFERENCES A (AID)
/
我需要PL/SQL过程,该过程将根据A中引用的行数更新表B中的某些行。我尝试过类似于计算行数的方法,但我不确定这是最好的方法:
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM
(SELECT * FROM A WHERE AID =
(SELECT ALINK FROM B WHERE ROWNUM = K))'
INTO TMP;
请显示示例输入和输出数据。您不需要使用executeimmediate.Unrelated,但是:您不需要
和/
从B中选择ALINK,其中ROWNUM=K
仅在K=1
时返回行,如果K
为其他值,则返回零行。如果ALINK
不是NULL
,则表a
(因为与主键存在外键关系)-您希望计算什么?请显示示例输入和输出数据。您不需要使用execute immediate。无关但:您不需要;
,并且/
从B中选择ALINK,其中ROWNUM=K
只会返回行,如果K=1
如果K
是其他内容,则它将返回零行s、 如果ALINK
不是NULL
,则表a
中始终只有一个匹配行(因为与主键存在外键关系)-您希望计算多少?