扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Create Or Replace Procedure p_Update_Add(Pn_Id In Number, --传入的id
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网页空间、营销软件、网站建设、西吉网站维护、网站推广。
Ln_Code Number, --返回码
Lr_Reinfo Number) Is
Ln_Flags Number;
Begin
Select Count(1) Into Ln_Flags From t_Test Where Id = Pn_Id; --t_test为测试表
If Ln_Flags 0 Then
--有一条或多条记录存在,表示主键已经存在,进行更新操作
Update t_Test Set Xxx = Xxx;
Lr_Code := 1;
Lr_Reinfo := '进行更新';
Elsif Ln_Flags = 0 Then
--没有记录,进行添加操作
Insert Into t_Test Values (Xx, Xxx, Xxx, Xxx);
Lr_Code := 2;
Lr_Reinfo := '进行新增';
Else
Lr_Code := -1;
Lr_Reinfo := '操作失败';
End If;
Exception
When Others Then
Dbms_Output.Put_Line('出现异常');
Rollback;
End;
这样的语法肯定是可以的。
关键是你的or,是不是你的逻辑分析出了问题?
你的这个判断,只有一种情况,会不执行then后边的情况,就是a = 1 同时 b = 2同时 c = 3的时候,否则,都会执行then后边的语句。
是不是你的逻辑出问题了?
出了a = 1 and b = 2 and c = 3,那么其他时候,都符合你这个判断。
你看看你所说的条件不成立的数据是什么,如果有困惑,可以把你指的这条数据贴出来。
是a = 1 and b = 2 and c = 3么?
甲骨文股份有限公司(NASDAQ:ORCL,Oracle)是全球大型数据库软件公司。总部位于美国加州红木城的红木岸(Redwood Shores),现时首席执行官为公司创办人劳伦斯·埃里森(Lawrence J. Ellison)。
2016年11月6日,甲骨文公司(Oracle)股东同意以 93 亿美元的资金收购Netsuite公司,每股价格约为 109 美元。
如果是 SQL 语句里面使用。
使用 DECODE 或者 CASE WHEN
DECODE 的用法就是
DECODE(abc, 50, 'A', 'B')
CASE WHEN 的用法就是
CASE WHEN abc=50 THEN 'A' ELSE 'B' END
如果是在存储过程里面的话,就是简单的 IF/ELSE 了
SQL 语句的话,就是
SELECT
abc, DECODE(abc, 50, 'A', 'B')
FROM
表
1 alter table student add(IDCard number(18),check(IDCard=3)); 2 select * from user_tab_columns where table_name in('STUDENT','TEACHER','LESSON','MESSAGE');
这样的功能不需要自己在定义函数了,Oracle自带了一个函数是可以实现这样的功能的“DECODE”函数
语法是这样的:
decode(expr,search1,result1,search2,result2,……search n,result n, default)
这个函数会用expr跟search值进行比较,如果匹配了就返回search后面配套的reault,如果都不匹配,返回default默认值。
如果是 SQL 语句里面使用。\x0d\x0a\x0d\x0a使用 DECODE 或者 CASE WHEN\x0d\x0a\x0d\x0aDECODE 的用法就是\x0d\x0aDECODE(abc, 50, 'A', 'B')\x0d\x0a\x0d\x0aCASE WHEN 的用法就是\x0d\x0aCASE WHEN abc=50 THEN 'AELSE 'BEND\x0d\x0a\x0d\x0a如果是在存储过程里面的话,就是简单的 IF/ELSE 了 \x0d\x0a\x0d\x0aSQL 语句的话,就是\x0d\x0a\x0d\x0aSELECT\x0d\x0a abc, DECODE(abc, 50, 'A', 'B')\x0d\x0aFROM\x0d\x0a 表
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流