PB中如何调用一个带有输出参数的存储过程?

时间:2022-07-05 16:19:41
在SQL Server 2000中有个存储过程,带有一个output参数,在pb中应该如何调用啊?
我用declare p_name for sql_procname
         @agument = :ls_a   ;
来声明,再用execute p_name;
来调用,但是得到的 ls_a 总是空的,为什么?
应该如何调用?

11 个解决方案

#1


gz..

#2


@agument = :ls_a   out

#3


FETCH p_name INTO :变量;

#4


存储过程作为事物对象的对象函数来使用,调用方法是:OBJECT.FUNCTION()
你这里应该是OBJECT.P_NAME(LS_A)

#5


每一种数据库的调用方式都不一样。你用的是SYBASE吧。
应是
declare p_name for sql_procname
         @agument = :ls_a   out;
execute p_name;
Fetch p_name into :ls_a;
这样就可以得到出参

#6


在pfe_main.pbl中选择n_tr,打开后在声明declare右边选择local external funtions,在文本框中点击右健,点paste special---sql----remote stored procedurecs,在打开的小窗口种选择你要做的东西,点机ok按钮,然后把出现语句拷贝到你索要的窗口的scrip的地方,把前面的subroytine去掉。写成sqlca.up_..,把里面的参数改称所需要的就可以了!

#7


是不是ls_a必须要先赋值比如space(1024)这样才能等到这个输出参数的值啊,好像这个output参数只能返回254个字节,是这样的吗?

#8


gz

#9


COPY一段代码:
DECLARE MySP PROCEDURE FOR SP_JXC_YFCK_SH
@yf_hth =: yf_hth,
@yf_djid =: yf_djid,
@yf_ywrq =: yf_ywrq,
@yf_ywy =: yf_ywy,
@yf_gys =: yf_gys,
@yf_kh =: yf_kh,
@yf_cfz =: yf_cfz,
@cz_bzw=:ls_return output
using sqlca;
EXECUTE MySP ;
Fetch Mysp Into :ls_return;
close mysp ;
这个是最完整的使用MS SQL存储过程的例子了

#10


"这个output参数只能返回254个字节,是这样的吗"
是这样的,因为PB的直联MS SQL驱动是6.X的,未升级

#11


declare p_name for sql_procname
         @agument = :ls_a  output ;
呵呵。

#1


gz..

#2


@agument = :ls_a   out

#3


FETCH p_name INTO :变量;

#4


存储过程作为事物对象的对象函数来使用,调用方法是:OBJECT.FUNCTION()
你这里应该是OBJECT.P_NAME(LS_A)

#5


每一种数据库的调用方式都不一样。你用的是SYBASE吧。
应是
declare p_name for sql_procname
         @agument = :ls_a   out;
execute p_name;
Fetch p_name into :ls_a;
这样就可以得到出参

#6


在pfe_main.pbl中选择n_tr,打开后在声明declare右边选择local external funtions,在文本框中点击右健,点paste special---sql----remote stored procedurecs,在打开的小窗口种选择你要做的东西,点机ok按钮,然后把出现语句拷贝到你索要的窗口的scrip的地方,把前面的subroytine去掉。写成sqlca.up_..,把里面的参数改称所需要的就可以了!

#7


是不是ls_a必须要先赋值比如space(1024)这样才能等到这个输出参数的值啊,好像这个output参数只能返回254个字节,是这样的吗?

#8


gz

#9


COPY一段代码:
DECLARE MySP PROCEDURE FOR SP_JXC_YFCK_SH
@yf_hth =: yf_hth,
@yf_djid =: yf_djid,
@yf_ywrq =: yf_ywrq,
@yf_ywy =: yf_ywy,
@yf_gys =: yf_gys,
@yf_kh =: yf_kh,
@yf_cfz =: yf_cfz,
@cz_bzw=:ls_return output
using sqlca;
EXECUTE MySP ;
Fetch Mysp Into :ls_return;
close mysp ;
这个是最完整的使用MS SQL存储过程的例子了

#10


"这个output参数只能返回254个字节,是这样的吗"
是这样的,因为PB的直联MS SQL驱动是6.X的,未升级

#11


declare p_name for sql_procname
         @agument = :ls_a  output ;
呵呵。