【发布时间】:2025-12-17 20:05:02
【问题描述】:
我有一个用于 Oracle 10g 的存储过程,需要在表中创建一个新行而不是创建重复项。
该表允许重复,只要所有列都不相同。这是因为最后两列的值可能不同。
话虽如此,当我尝试存储我的过程时,我得到以下标志:
Line # = 10 Column # = 1 Error Text = PL/SQL: SQL Statement ignored
Line # = 13 Column # = 3 Error Text = PL/SQL: ORA-00933: SQL command not properly ended
该过程看起来不错[鉴于我之前没有像这样为插入添加 WHERE 子句]。
所以要么我的格式不应该是这样,要么我的逻辑不正确。 无论是哪种情况,我都尝试在网上和 * 上查找示例,但都失败了。
关于我应该如何调整它的任何建议?
(val_ID tablename.column1%type,
val_cat tablename.column2%type,
val_sub tablename.column3%type
)
AS
BEGIN
INSERT INTO tablename (column1, column2, column3)
VALUES (val_ID, val_cat, val_sub)
WHERE ((column1 != val_ID) and (column2 != val_cat) and (column3 != val_sub));
COMMIT;
END;
我什至删除了 WHERE 子句中的“(”,但没有任何改变。
更新:
尝试了建议,所有错误都消失了[但是记录没有创建]
(val_ID tablename.column1%type,
val_cat tablename.column2%type,
val_sub tablename.column3%type
)
AS
BEGIN
INSERT INTO tablename (column1, column2, column3)
SELECT val_ID, val_cat, val_sub
FROM dual
MINUS
SELECT val_ID, val_cat, val_sub
FROM tablename;
【问题讨论】:
标签: stored-procedures oracle10g where-clause insert-into