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调用的存储过程内部应避免分布式查询,我后来用定时作业来解决数据同步问题。