今天是第一次寫oracle的儲存過程,由於新手,被一些東西糾結了一天。特此記錄下,讓自己以後不要在犯錯了。
1.count(*)
第一次寫oracle的儲存過程,沒什麼經驗,就count(*)這個問題,讓我正正花費了乙個早上。
example:
create or replace procedure demo( identitycardno in varchar2) as
v_count number;
begin ...
select count(*) into v_count from userinfo where identitycardno(身份證)=identitycardno 按理說,這只是個簡單語句。就是看看這個身份證
在userinfo表中是否存在值。v_count只會是0或者1,可是輸出的時候會輸出500+或是5000+。直接在sql視窗執行都沒問題,但是在
儲存過程裡就出現這奇怪的數字。
解決:後來是發現我定義的引數名和資料庫中表的欄位名一樣了,將定義的引數名(identitycardno)成改掉就可以了。(但是還是不清楚原理是為什麼?如果大家有知道原理的,請告訴下我。)
2.net呼叫問題了
資料庫中一定存在"demo" 的儲存過程,但是呼叫
oracleparameter parameter = new oracleparameter;
parameter[0].value = ...;
parameter[1].value = ...;
parameter[0].direction = parameterdirection.input;
parameter[1].direction = parameterdirection.output;
int roweffect;
對於儲存過程中,含有輸出型別的引數,如: resultvalue out number 時,在介面上 傳參時,不能用 int result= dbhelperora.runprocedure("prj_personallogtask_pkg.changeworktask", param,out roweffect); 這種形式 要修改成:
修改成:dbhelperora.runprocedure("demo", parameter);
int resulenum=convert.toint32(parameter[1].value);
這樣就可以了。
由於第一次寫oracle儲存過程,就這兩個問題真是困擾了一天,先自己記錄一下,防止以後犯同樣的錯誤。
第一次碰到VMProtect
第一次碰到虛擬機器保護技術,確實很強大!用od和imunitydbg一載入,直接退出,不給任何跟蹤的機會!用windbg開啟,因為預設不是停在程式的入口,故一開啟直接報 憑著自己已往的經驗,找到程式的入口點,直接修改入口的兩個位元組 int 3 程式爆出異常,再選擇除錯,卻還是靜靜地退出了。好比你想...
第一次寫部落格
今天是我第一次寫自己的部落格 感到很激動 我是乙個程式設計師 之前一直看一些關於如何學習程式語言的貼子 大家都說學習一門語言 在於積累 而積累不能都考腦子儲存起來 需要整理成乙個自己的小金庫 在這個小金庫中有我在工作開發中遇到的乙個乙個的問題 我們往往對於新的問題要花費相對較長的時間去解決,對於我 ...
第一次寫部落格
這是我第一次寫部落格,也不知道到底該寫點什麼,感覺很多需要寫,但還是不那麼的自信,不論怎麼樣,還是希望能夠記錄一下自己作為一名程式猿這點點滴滴的事情,算是一段經歷吧。希望看到的人不要噴我。我是菜鳥,菜的不能再菜的鳥。大神就不要來嘲笑小弟了。剛開始寫程式還是跟著一群有志向大四的學長。可能就是這一點點的...