在PL / SQL块中合并两个表

时间:2015-03-01 18:51:31

标签: sql oracle plsql sql-merge

我接下来有3张桌子:

  • Fibonacci(id,value)前1000个斐波纳契数。
  • Prime(id,value)首先是2000个素数。
  • FiboPrime(价值,素数),最初表格为空。

我必须使用Fibonacci表中的素数填充FiboPrime表(prime = 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;

我收到了下一个错误:经历了符号" INTO"当期待以下之一时: :=。(@;不是空范围字符。谁能帮我解决?

2 个答案:

答案 0 :(得分:4)

  

DECLARE

     

BEGING

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

  2. 关键字为BEGIN NOT BEGING

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

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

    1. 我没有理由在 PL / SQL 中执行此操作。执行MERGE作为SQL。无需使用BEGIN-END块包装它。

答案 1 :(得分:1)

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);