合并 PL/SQL 块中的两个表

Rap*_*tul 2 sql oracle plsql sql-merge

我有接下来的 3 个表:

  • Fibonacci(id, value) 前 1000 个斐波那契数。
  • Prime(id, value) 前 2000 个素数。
  • FiboPrime(value, prime),最初表是空的。

我必须用斐波那契表中的质数填充 FiboPrime 表(质数=1 => 数字是质数,否则数字不是质数。)

我必须使用 MERGE 语句,它是尝试:

DECLARE

    BEGING
        MERGE INTO FiboPrime fp
         USING fibonacci f, prime p
         ON (f.value=p.value)
        WHEN MATCHED THEN
         UPDATE SET
          fp.value=f.value,
          fp.prime=1;
    WHEN NOT MATCHED THEN
     INSERT VALUES(f.value,0);
END;
Run Code Online (Sandbox Code Playgroud)

我收到下一个错误:当期望出现以下情况之一时,出现符号“INTO”: := .( @ ; not null range character。谁能帮我解决这个问题?

Lal*_*r B 5

宣布

开始

  1. 您不需要关键字DECLARE,因为您没有任何要声明的内容。

  2. 关键字是BEGINand NOT BEGING

  3. USING子句修改为SELECT查询。例如:

USING (select t1.col1,t2.col2 from t1,t2)

  1. 我不认为有任何理由在PL/SQL 中这样做。执行MERGEas SQL。不需要用BEGIN-END块包裹它。