我用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)
你这里应该是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;
这样就可以得到出参
应是
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存储过程的例子了
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的,未升级
是这样的,因为PB的直联MS SQL驱动是6.X的,未升级
#11
declare p_name for sql_procname
@agument = :ls_a output ;
呵呵。
@agument = :ls_a output ;
呵呵。
#1
gz..
#2
@agument = :ls_a out
#3
FETCH p_name INTO :变量;
#4
存储过程作为事物对象的对象函数来使用,调用方法是:OBJECT.FUNCTION()
你这里应该是OBJECT.P_NAME(LS_A)
你这里应该是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;
这样就可以得到出参
应是
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存储过程的例子了
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的,未升级
是这样的,因为PB的直联MS SQL驱动是6.X的,未升级
#11
declare p_name for sql_procname
@agument = :ls_a output ;
呵呵。
@agument = :ls_a output ;
呵呵。