合并 PL/SQL 块中的两个表
Merge two tables in PL/SQL block
我有接下来的 3 tables:
- Fibonacci(id, value) 前 1000 个斐波纳契数。
- Prime(id, value) 前2000个素数。
- FiboPrime(value, prime),最初 table 为空。
我必须使用斐波那契 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
您不需要关键字 DECLARE
,因为您没有任何要声明的内容。
关键字是 BEGIN
并且 NOT BEGING。
将 USING
子句修改为 SELECT
查询。例如:
USING (select t1.col1,t2.col2 from t1,t2)
- 我在 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);
我有接下来的 3 tables:
- Fibonacci(id, value) 前 1000 个斐波纳契数。
- Prime(id, value) 前2000个素数。
- FiboPrime(value, prime),最初 table 为空。
我必须使用斐波那契 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
您不需要关键字
DECLARE
,因为您没有任何要声明的内容。关键字是
BEGIN
并且 NOT BEGING。将
USING
子句修改为SELECT
查询。例如:
USING (select t1.col1,t2.col2 from t1,t2)
- 我在 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);