Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于根据引用更新某些行的Oracle存储过程_Oracle_Oracle10g - Fatal编程技术网

用于根据引用更新某些行的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
中始终只有一个匹配行(因为与主键存在外键关系)-您希望计算多少?