gonggou123 发表于 2007-6-2 11:27

我做了一个存储过程,后台有值 前台却没有??????????

DECLARE watercode PROCEDURE FOR sp_watercode  <br>         @flag = GCB,   <br>         @key = projectid,   <br>         @table = tbl_gcinfdetail  ;<br>execute watercode;<br>fetch watercode into  :ls_proid;<br>close watercode;<br><br>这个ls_proid没有值。。。这是什么原因?<br>有什么方法可以解决这样的问题?<br>后台绝对没错,前台至少语法没错 还有 数据库连接正确 有高人指教吗?<br>我真的无奈了
[align=right][color=#000066][此贴子已经被作者于2007-6-2 13:59:45编辑过][/color][/align]

fyh 发表于 2007-6-2 20:57

DECLARE watercode PROCEDURE FOR sp_watercode  <BR>         @flag = :GCB,   <BR>         @key = :projectid,   <BR>         @table = :tbl_gcinfdetail  ;  参数前`加‘:’<BR>execute watercode;<BR>

gonggou123 发表于 2007-6-4 09:13

我加了 却说不认识那个GCB

路過 发表于 2007-6-4 10:50

<P>例:orcal數據庫 pb 開發工具:(有輸入,輸出參數)<BR>orcal 中:<BR>create or replace procedure sp_watercode <BR> (gcb in varchar2,--輸入參數<BR>  projectid in varchar,--輸入參數<BR>  tbl_gcinfdetail in varchar2,--輸入參數<BR> <FONT color=#ff3300> proid out string</FONT>) --輸出參數<BR>is<BR>--定義<BR> ERRNO            INTEGER;<BR>  ERRMSG              VARCHAR2(500);<BR>  ls_proid_temp string;<BR><BR>   CURSOR C1 IS<BR>           SELECT proid<BR>             FROM water.water<BR>            WHERE water.gcb= :gcb and<BR>                  water.projectid = : projectid and<BR>                  water.tail = :tbl_gcinfdetail ;<BR>  <BR>begin<BR> OPEN C1;<BR>       FETCH C1 INTO ls_proid_temp ;    <BR>       IF C1%NOTFOUND THEN     <BR>          ERRNO := -20002;<BR>          ERRMSG := '沒有數據';<BR>          RAISE_APPLICATION_ERROR(ERRNO,ERRMSG);<BR>         end if <BR>  end sp_watercode  ;<BR><BR><BR><BR><FONT color=#6809f7>pb 中的代碼:</FONT><BR>string ls_gcb,ls_pro,ls_gcinfdetail,ls_proid<BR>ls_gcb = dw_n.getitemstring(getrow(),'gcb')<BR>ls_pro = dw_n.getitemstring(getrow(),'projectid')<BR>ls_gcinfdetail = dw_n.getitemstring(getrow(),'tail')<BR><BR>DECLARE proc_ins_pnl PROCEDURE FOR sp_watercode <BR><FONT color=#f73809>                  (:ls_gcb ,:ls_pro,:ls_pnl_nm,:ls_gcinfdetail); --輸入參數 </FONT><BR>        EXECUTE proc_ins_pnl;</P>
<P>        IF SQLCA.SQLCODE = 0 THEN<BR>           <FONT color=#ff0000>FETCH proc_ins_pnl INTO :ls_proid ;---輸出(得到數據)</FONT><BR>        END IF <BR>        choose case sqlca.sqlcode<BR>           <FONT color=#ff6600> case 100,0--處理數據,<BR></FONT>                dw_1.setitem(dw_1.getrow(),"proid",trim(ls_proid ))<BR><BR>        <FONT color=#ff3300>     case -1 錯誤提示</FONT><BR>                long ll_pos,ll_pos1    <BR>                ll_pos = pos(SQLCA.SQLERRTEXT,"ORA-06512")<BR>                ll_pos1 = pos(SQLCA.SQLERRTEXT,"ORA-20002")<BR>                Messagebox("輸入資料錯誤~",MID(SQLCA.SQLERRTEXT,ll_pos1 + 10 ,ll_pos - ll_pos1 - 10),stopsign!)<BR>                return<BR>        end choose<BR>        close proc_ins_pnl;<BR><BR><BR></P>

gonggou123 发表于 2007-6-5 15:39

谢谢斑竹,但是我的还是不对。。。我不知道为什么<BR>我用的是SQL数据库<BR><BR>语法检查也没错 <BR>就是没有结果出来

页: [1]

编程论坛