在PL/SQL块中合并两个表
我有下面3张桌子: Fibonaccid,值前1000个fibonacci数。 Primeid,值前2000个素数。 FiboPrimevalue,prime,最初该表为空。 我必须用Fibonacci表prime=1=>中的素数填充FiboPrime表,否则该数不是素数 我必须使用MERGE语句,这是一种尝试:在PL/SQL块中合并两个表,sql,oracle,plsql,sql-merge,Sql,Oracle,Plsql,Sql Merge,我有下面3张桌子: Fibonaccid,值前1000个fibonacci数。 Primeid,值前2000个素数。 FiboPrimevalue,prime,最初该表为空。 我必须用Fibonacci表prime=1=>中的素数填充FiboPrime表,否则该数不是素数 我必须使用MERGE语句,这是一种尝试: DECLARE BEGING MERGE INTO FiboPrime fp USING fibonacci f, prime p
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;
我遇到下一个错误:当预期出现以下情况之一时,将符号输入:
:= . @ ; 非空范围字符。谁能帮我解决这个问题
申报
乞求
您不需要关键字DECLARE,因为您没有任何东西要声明
关键字是BEGIN而不是BEGING
将USING子句修改为SELECT查询。例如:
使用从t1,t2中选择t1.col1,t2.col2
我看不出有任何理由在PL/SQL中这样做。以SQL的形式执行合并。无需用始端块将其包裹。
这里有一个额外的分号:fp.prime=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);