【ALLLLLLLLLLLLLLLLLLLL】判断一个记录是否存在

这不是鸭头 2012-07-09 03:48:19
if exists( select 1 from t_gpslatest where f_code='12')
(update t_gpslatest set f_style='99',f_longtitude='88',f_latitude='77',f_direction='66',f_speed='55',f_time=sysdate where f_code = '11')
else
(insert into t_gpslatest(f_code,f_style,f_longtitude,f_latitude,f_direction,f_speed,f_time)values('11','22222','333333','44444','55555','66666',sysdate))



就是判断f_code = 12 的记录是否存在,如果存在就更新,如果不存在就插入。
上面的代码在Oracle数据库中怎么不行?
update 和 insert into。还都要加上括号,要是不加上,就报ORA-00933:SQL命令未正确结束。

update和Insert into 代码单独执行是可以的。

PS:MS-SQL板块的兄弟们,让我到这里问。
...全文
217 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zll793027848 2012-07-09
  • 打赏
  • 举报
回复
1楼回答的很好了,楼主就用1楼的答案撒。
hupeng213 2012-07-09
  • 打赏
  • 举报
回复
oracle 10g中MERGE有如下改动:
1、UPDATE或INSERT子句是可选的
2、UPDATE和INSERT子句可以加WHERE子句
3、ON条件中使用堂过滤谓词来INSERT所有的行到目标表中,不需要连接源表和目标表
4、UPDATE子句后面可以跟DELETE子句来去除一些不需要的行
--示例
MERGE INTO products p
USING new products np
ON (p.product_id = np. Product_id)
WHERE MATCHED THEN
UPDATE
SET p. product_name = np. Product_name,
p.category = np.category
DELETE WHERE (p.category = ‘ELECTRNCS’)
WHEN NOT MATCHED THEN
INSERT
VALUES (np. Product_id,np. Product_name,np.category)
槑党--一缕风 2012-07-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
你这个语法不行..

SQL code

DECLARE
v_num NUMBER
BEGIN
select Count(*) INTO v_num from t_gpslatest where f_code='12';
IF v_num!=0 THEN
update t_gpslatest set f_style='99',f_longtitude='……
[/Quote]
++
小德 2012-07-09
  • 打赏
  • 举报
回复
你这个语法不行..
DECLARE 
v_num NUMBER
BEGIN
select Count(*) INTO v_num from t_gpslatest where f_code='12';
IF v_num!=0 THEN
update t_gpslatest set f_style='99',f_longtitude='88',f_latitude='77',f_direction='66',f_speed='55',f_time=sysdate where f_code = '11';
ELSE
insert into t_gpslatest(f_code,f_style,f_longtitude,f_latitude,f_direction,f_speed,f_time)values('11','22222','333333','44444','55555','66666',sysdate);
END IF;
END;

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧