合并 PL/SQL 块中的两个表

Merge two tables in PL/SQL block

我有接下来的 3 tables:

我必须使用斐波那契 table 中的质数填充 FiboPrime table(质数=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;

我收到下一个错误:当期望出现以下情况之一时,Econtered 符号 "INTO": := .( @ ; 不是空范围字符。谁能帮我解决一下?

DECLARE

BEGING

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

  2. 关键字是 BEGIN 并且 NOT BEGING

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

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

  1. 我在 PL/SQL 中看不出有任何理由这样做。执行 MERGE 作为 SQL。不需要用 BEGIN-END 块包装它。
MERGE INTO FiboPrime fp
         USING ( select Fibonacci.value f, Prime.value p from Fibonacci, prime ) t
         ON (t.f = t.p)
        WHEN MATCHED THEN
         UPDATE SET
          fp.value=t.f,
          fp.prime=1
    WHEN NOT MATCHED THEN
     INSERT  VALUES(t.f,0);