存儲過程sql語句


select count(virtualacc) into v_count  from T_ATMMONITOR WHERE virtualacc = v_number;

用於存儲過程中,是把count(virtualacc)統計的數量值賦予變量v_count,在后續的存儲過程中調用v_count變量。

在sql語句中

select into from與insert into select 區別

語法:

insert into table2(field1,field2,。。。)select value1,value2,。。。from table1

要求table2必須存在

truncate,delete,drop三者的區別

1.truncate與不帶where條件的delete意義一樣,刪除全部行的內容

2.truncate刪除表內容,釋放空間,執行速度快,保留表結構

delete 刪除表內容,不釋放空間,保留表結構

drop刪除表內容和表機構,釋放空間

table2存在,可以向table2加入符合列類型的內容,包括常量,注意,導入常量后,該列的所有值都是常量,如圖所示

 insert into T_ATMMONITOR (
     ATMNUM
    ,VIRTUALACC
    ,CORPID
    ,INVMONEY
    ,DAYMONEY
    ,DATAGETTIME
    ,CUTOFFMONEY
    ,CUTOFFTIME
   ) select atmnum, v_number, corpid, v_now_money, v_out_money, current TIMESTAMP, 0, current TIMESTAMP
    from t_atminfo where VIRTUALACC = v_number;

注意在t_atminfo表中不存在v_now_money,v_out_money,0這樣的字段值,這些可以作為常量插入到t_atmmonitor

select into from語句

語法

select value1,value2 into table2 from table1

select ID,Name into table1 from table2

要求table2不存在,因為在插入的時候,系統自動創建table2,如果之前table2已經存在,系統提示表已經存在

那如果我想要MyTable2中的Name列,那我也僅僅是需要把Name列select出來,然后添加到新表中即可。

 

replace函數

replace(c1,c2[,c3])

在字符串c1中找到字符串c2,替換成c3.

若c3為空,則在c1中刪除所有c2.
replace('123123tech', '123');would return 'tech'
replace('123tech123', '123');would return 'tech'
replace('222tech', '2', '3');would return '333tech'
replace('0000123', '0');would return '123'
replace('0000123', '0', ' ');would return ' 123'
nvl函數
if else 類似

nvl(str,1)

if str ==null
return 1;
else return str;
coalesce函數
語法  COALESCE ( expression [ ,...n ] )

返回表達式中第一個非空表達式,如有以下語句:

  SELECT COALESCE(NULL,NULL,3,4,5) FROM dual
  其返回結果為:3
case when的用法
在儲存過程中,這句是什么意思SUM(CASE WHEN ISNULL(A.ReceiveQty,0)>0 THEN 1 ELSE 0 END) AS SumReceiveRolls,
A表里ReceiveQty大於0,值為1,否則為0,
然后把這些1,0加起來,當成一列(SumReceiveRolls)查詢出來。
case coalesce(c.limit, 1) when 0 then 1 else c.limit end
coalesce函數是去null的,如果c.limit值不為null,則coalesce(c.limit,1)就是c.limit本身值
DB2查詢表中前10條記錄
select * from t_user where corpid='901010300' order by userid desc fetch first N rows only
oracle數據庫查詢
select * from t_user where rownum<=10
timestamp數據類型查詢語句
select * from t_authlog where to_char(logtime ,'yyyymmdd hh24:mi:ss')>'20150316 23:59:59'
存儲過程解析

SELECT count(PLANNUM) into v_count FROM T_CASHREPNPLAN where CORPID = v_corpid and plannum = v_plannum and PLANSTATE = '04'; 

注:count(plannum)轉換成into v_count的變量

 if v_count = 0 then  注:如果這個變量統計為0,顯示97
  set v_ret = '97';
  goto GOTO_RET;
 end if;


數據庫字段是timestamp類型,查詢區間的數據
select * from t_authlog where logtime between timestamp('2015-3-18 10:10:10') and timestamp('2015-3-19 15:40:20')

表中增加列,並限定默認字段的值
alter table t_warning add column overdue char(1) with default '0';
查詢當前日期的數據
db2 => select * from t_compinvmonitor where date(gettime) = current date

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com