在望的db两学程是:DB二编程序手艺(1)。
1 DB两编程 

1.1 修存储进程时Create 后肯定没有要用TAB键 

create procedure 

的create后只能用空格,而弗成用tab健,不然编译会通不外。 

切忘,切忘。 

1.二 运用权且表 

要注重,姑且表只能修正在user tempory tables space 上,假设database只需system tempory table space是不克不及修姑且表的。 

此外,DB两的权且表以及sybase及oracle的姑且表没有太同样,DB两的权且表是正在一个session内无效的。以是,奈何程序有多线程,最佳没有要用姑且表,很易节制。 

修姑且表时最佳加之  with  replace选项,如许就能够没有表示的drop 姑且表,修姑且表时怎么没有添该选项而该姑且表正在该session内未建立且不drop,这时候会领熟错误。 

1.3 从数据表外与指定前几许笔记录 

select  *  from tb_market_code fetch first 1 rows only 

但上面这类体式格局没有容许 

select market_code into v_market_code  

from tb_market_code fetch first 1 rows only;      



选第一笔记录的字段到一个变质以下列体式格局经办 

declare v_market_code char(1); 

declare cursor1 cursor for select market_code from tb_market_code  

fetch first 1 rows only for update; 

open cursor1; 

fetch cursor1 into v_market_code; 

close cursor1; 

1.4 游标的利用 

注重co妹妹it以及rollback 

运用游标时要特地注重要是不添with hold 选项,正在Co妹妹it以及Rollback时,该游标将被敞开。Co妹妹it 以及Rollback有许多对象要注重。特意年夜口 

游标的2种界说体式格局 

一种为 

declare continue handler for not found 

begin 

set v_notfound = 1; 

end; 

declare cursor1 cursor with hold for select market_code from tb_market_code  for update; 

open cursor1; 

set v_notfound=0; 

fetch cursor1 into v_market_code; 

while v_notfound=0 Do 

--work 

set v_notfound=0; 

fetch cursor1 into v_market_code; 

end while; 

close cursor1; 

这类体式格局应用起来比力简略,但也对照灵动。专程是可使用with hold 选项。假定轮回内有co妹妹it或者rollback 而要僵持该cursor没有被洞开,只能利用这类体式格局。

 另外一种为 

pcursor1: for loopcs1 as  cousor1  cursor  as 

select  market_code  as market_code 

from tb_market_code 

for update 

do 

end for; 

这类体式格局的甜头是比力简略,不消(也没有容许)运用open,fetch,close。 

但不克不及应用with  hold 选项。若是正在游标轮回内要利用co妹妹it,rollback则不克不及利用这类体式格局。何如不co妹妹it或者rollback的要供,保举利用这类体式格局(望来For这类体式格局有答题)。 

修正游标确当前纪录的办法 

update tb_market_code set market_code=’0’ where current of cursor1; 

不外要注重将cursor1界说为否修正的游标 

declare cursor1 cursor for select market_code from tb_market_code  

for update; 

for update 不克不及以及GROUP BY、 DISTINCT、 ORDER BY、 FOR READ ONLY及UNION, EXCEPT, or INTERSECT但 UNION ALL除了中)一路利用。 

1.5 相通decode的转码独霸 

oracle外有一个函数  select decode(a1,’1’,’n1’,’二’,’n二’,’n3’) aa1 from 

db二不该函数,但否以用变通的办法 

select case a1  

when ’1’ then ’n1’  

when ’二’ then ’n两’  

else ’n3’ 

  end as aa1 from 

1.6 雷同charindex查找字符正在字串外的职位地方 

Locate(‘y','dfdasfay') 

查找'y' 正在'dfdasfay'外的职位地方。 

1.7 雷同datedif计较2个日期的相差地数 

days(date(‘两001-06-05')) – days

点赞(13) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部