pb執行存儲過程
Ⅰ 如何在PB中調用存儲過程並取得返回值和輸出值的相關推薦
沒有見過調用存儲過程象調用游標一樣的代碼,一般我是這樣聲明的:DECLARE Lproc_1 PROCEDURE FOR
proc_1 @as_int = :li_int OUTPUT ;
execute Lproc_cw_gz_personal_cal ;
變數li_int即為返回的值。如果要同時返回多行的數據,可以使用DATAWINDOW或者是DATASTORE來得到結果集:
string ls_sql_syntax , ls_syntax
string ls_error
integer li_ini
ls_sql_syntax = 'execute proc_1 "' + string ( li_ini ) + '"'
Datastore ldt_item
ldt_item = Create Datastore
ls_syntax = SQLCA.SyntaxFromSQL( ls_sql_syntax '', ls_error )
IF Len( ls_error ) > 0 THEN
MessageBox("提示信息", "創建數據存儲窗口語法出現錯誤!" + ls_error )
RETURN - 1
END IF
ldt_item .Create( ls_syntax, ls_error )
IF Len( ls_error ) > 0 THEN
MessageBox("提示信息", "創建數據存儲對象出現錯誤!" + ls_error )
RETURN - 1
END IF
ldt_item . Settransobject ( sqlca )
ldt_item . retrieve ( )
後面就通常的遍歷了!
Ⅱ PB 存儲過程取值問題
DECLARE PROCEDURE_NAME PROCEDURE PROCEDURE_NAME ( :變數, :變數 ) ;
EXECUTE PROCEDURE_NAME ;
IF trim(sqlca.sqlerrtext) <> '' Then
messagebox( ' 執行Procere失敗! ' + sqlca.sqlerrtext )
close PROCEDURE_NAME ;
rollback ;
else
fetch PROCEDURE_NAME into :ls_return;
sle_3.text=ls_return
close PROCEDURE_NAME ;
end if
求採納
Ⅲ PB中存儲過程的調用
declare login procere for login
@uid=:ls_id
using sqlca ;
execute login;
if sqlca.sqldbcode <> 0 then
rollback;
else
commit;
end if
close login;
Ⅳ 新手提問 關於PB中怎麼調用存儲過程
declare getinfo1 procere for getinfo ;// 定義過程調用
sqlca.autocommit = false
execute getinfo1;//執行過程,這里是不需要其他參數的
if SQLCA.sqlcode = -1 then
messagebox("","不成功"+'~r~n'+SQLCA.SQLErrText)
rollback;
else
messagebox("","成功")
commit;
end if
close getinfo1;// 關閉調用
看看SQLCA.SQLErrText是什麼.
Ⅳ 在pb里調用存儲過程的時候,如何傳遞數組變數
你調用的存儲過程需要的變數放在一個數組中了是吧,你的數組是怎麼存儲變數的,比如:存儲過程需要兩個變數@year char(4),@month integer,這兩個變數是怎麼存儲在數組中的呢?比如是這樣存儲的吧 @year + @month ,這樣的格式存儲的數組
string ls_string,ls_year
integer li_month,li_persion
array a[]
FOR li_count = 1 to LowerBound(arrary) //數組名
ls_string = a[li_count]
li_persion = pos(ls_string,'+')
ls_year = mid(ls_string,1,li_persion - 1)
li_month =integer(mid(ls_string,li_persion + 1 )
DECLARE pc PROCEDURE FOR proc
@year = :ls_year,
@month = :li_month
USING sqlca;
EXECUTE pc ;
NEXT
Ⅵ 簡單的存儲過程 PB中怎麼調用
以下面這個的 SQL SERVER里存儲過程為例
CREATEproceredbo.sp_insert(
@returnvaluechar(10)output)
as
insertintot_student(id,name,sex)
values(』100′,』procere』,'1′)
select@returnvalue=『aaa』
GO
調用方法如下:
Stringls_return
DECLARElogical_procere_namePROCEDUREFORsp_insert
@returnvalue=:ls_returnOUTPUT;
executelogical_procere_name;
fetchlogical_procere_nameinto:ls_return;
closelogical_procere_name;
Ⅶ 在pb8.0中怎樣調用oracle存儲過程和函數
oracle寫好的函數可以在SQL語句中直接調用,比如:你寫了一個TRIM函數,然後PB端的SQL中可以這樣調用:select col1,... from tab_name where trim(col1) ='';
進行存儲過程調用:
PowerBuilder requires a declarative statement to identify the database stored procere that is being used and a logical name that can be referenced in subsequent SQL statements. The general syntax for declaring a procere is:
DECLARE logical_procere_name PROCEDURE FOR
Oracle_procere_name(:InParam1,:InParam2, ...)
{USING transaction_object};
Ⅷ PB的存儲過程如何針對某一天執行
不知道能不能執行這個存儲過程,然後使以前的數據能更新過來。或者能讓某天,或者某個時間段的數據更新。
1,不知道能不能執行這個需要看你存儲過程是否會造成什麼影響,是否會改變數據,而你又不確定改變數據的做法是否正確或者能夠還原。
2,使以前的數據能更新過來或者能讓某天,或者某個時間段的數據更新。
這個依然看你這個存儲過程是怎麼寫的。你在存儲過程里寫了按哪些條件更新哪些數據,那麼相應的數據才會改變。
————————————————————————
第一次回答:
你的問題不清晰:
1,PB的存儲過程是指:在PB中執行的存儲過程嗎?
2,針對某一天執行是指:該存儲過程只在那一天執行嗎?還是這個存儲過程有個參數,需要你用PB傳遞一個日期的參數進去?
Ⅸ 如何在PB中執行oracle存儲過程並接收返回的數據集
返回一個游標社!
有倆種方法:
一種是聲明系統游標,一種是聲明自定義游標,然後後面操作一樣,參數類型為
in out 或out
(1)聲明個人系統游標.(推薦)
create or replace p_temp_procere
(
cur_arg out sys_refcursor; --方法1
)
begin
open cur_arg for select * from tablename;
end
調用
declare
cur_calling sys_refcursor;
begin
p_temp_procere(cur_calling); --這樣這個游標就有值了
for rec_next in cur_calling loop
....
end loop;
end;
(2)在包頭中申明一個游表類型,然後調用者申明一個這個類型的游標變數,傳給返回遊標的存儲過程 ,存儲過程out這個結果集,這種方法很麻煩.游標類型不能像索引表一樣使用create or replace type方法來創建,所以只能在包中申明,並且需要使用/來執行,後面的存儲過程才認這個游標類型.(不推薦,但是建議要知道並且要會這種方式,畢竟它有它存在的道理)
--定義全局變數
create or replace package pkg_package
as
type type_cursor is ref cursor;
type type_record is record
(
test01 varchar2(32),
test02 varchar2(32),
test03 varchar2(32)
);
end;
/
--創建返回遊標的存儲過程
create or replace procere p_temp_procere
(
cur_out_arg out pkg_package.type_cursor
)
is
begin
open cur_out_arg for select * from test;
end;
/
--調用
declare
cur_out_arg pkg_package.type_cursor;
rec_arg pkg_package.type_record;
begin
p_temp_procere(cur_out_arg);
fetch cur_out_arg into rec_arg;
dbms_output.put_line(rec_arg.test01);
dbms_output.put_line(rec_arg.test02);
dbms_output.put_line(rec_arg.test03);
end;
Ⅹ PB調用存儲過程執行鏈接伺服器錯誤的問題! 您是如何解決的,望回復!
PB確實是不支持這種寫法的,PB調用的存儲過程內部應避免分布式查詢,我後來用定時作業來解決數據同步問題。