免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5246 | 回复: 7
打印 上一主题 下一主题

在PB中执行存储过程的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-11-26 12:43 |只看该作者 |倒序浏览
1、我的存储过程是这样建立的
create procedure pu_up_pos_slmplu(
ls_prodplu char(13),
ldc_salprc  decimal(10,2)
)
update slmplu
set salprc = ldc_salprc,
    cvsprc = ldc_salprc,
    touchdate = current
where prodplu=ls_prodplu;
end procedure
                                            
2、在PB中我是这样使用的
        DECLARE l_proc_1 PROCEDURE FOR pu_up_pos_slmplu (:ls_prodplu,:ldc_price);
        EXECUTE l_proc_1;
        if        sqlca.sqlcode        <>;        0        then
                ls_err= sqlca.sqlerrtext
                ll_dbcode = sqlca.sqlcode
                rollback        using        sqlca;
                messagebox('错误信息!返回值='+string(ll_dbcode),ls_prodplu+'价格更新失败!错误行号='+string(li_i)+ls_err)
                return       
        end        if
3、结果
我试着在dbaccess中使用execute procedure pu_up_pos_slmplu ('xxxx',50)语句执行,其结果没有问题,但在PB中执行,其sqlcode返回值确一直是100,我查看过传递的变量值,没问题啊,但就是得不到正确得结果,请教大家,看谁能帮我来分析一下是什么原因,谢谢大家

论坛徽章:
0
2 [报告]
发表于 2004-11-26 15:38 |只看该作者

在PB中执行存储过程的问题

你看看DECLARE 成功没,返回多少,PB调用的方法不记得了好久没用你查查的帮助

论坛徽章:
0
3 [报告]
发表于 2004-11-26 18:36 |只看该作者

在PB中执行存储过程的问题

declare确实报错了,返回值-1,但错在哪里哪?请大家帮忙指点一下,谢谢

论坛徽章:
0
4 [报告]
发表于 2004-11-26 20:15 |只看该作者

在PB中执行存储过程的问题

以下是我在PB中执行过程的一段,不知对你有无帮助。(Query_String是执行过程的SQL语句)
        Prepare Sqlsa From uery_String;
        If Sqlca.Sqlcode <>; 0 Then
                Return_String = "0|"
                MessageBox("数据库操作错误[PREPARE]",String(Sqlca.SqlErrText))
        End If

        Describe Sqlsa Into Sqlda;
        If Sqlca.Sqlcode <>; 0 Then
                Return_String = "0|"
                MessageBox("数据库操作错误[DESCRIBE]",String(Sqlca.SqlErrText))
        End If

        Declare Cur_Procedure Dynamic Procedure For Sqlsa;
        If Sqlca.Sqlcode <>; 0 Then
                Return_String = "0|"
                MessageBox("数据库操作错误[DECLARE]",String(Sqlca.Sqlcode) + ":" + String(Sqlca.SqlErrText))
        End If

        Execute Dynamic Cur_Procedure Using Descriptor Sqlda;
        If Sqlca.Sqlcode <>; 0 And Sqlca.Sqlcode <>; 100 Then
                Return_String = "0|"
                MessageBox("数据库操作错误[EXECUTE]",String(Sqlca.Sqlcode) + ":" + String(Sqlca.SqlErrText))
        End If

        If Sqlca.Sqlcode = 0 Then
                Fetch Cur_Procedure Using Descriptor Sqlda;
                If Sqlca.Sqlcode <>; 0 And Sqlca.Sqlcode <>; 100 Then
                        Return_String = "0|"
                        MessageBox("数据库操作错误[FETCH]",String(Sqlca.Sqlcode) + ":" + String(Sqlca.SqlErrText))
                End If

                Do While Sqlca.Sqlcode = 0
                        For i = 1 To Sqlda.NumOutPuts
                                Choose Case Sqlda.OutParmType
                                        Case typeinteger!,typedecimal!,typedouble!,typelong!,typereal!,typeboolean!
                                                Return_String = Return_String + String(GetDynamicNumber(Sqlda,i)) + "|"
                                        Case typeString!
                                                Return_String = Return_String + GetDynamicString(Sqlda,i) + "|"
                                        Case typedate!
                                                Return_String = Return_String + String(GetDynamicDate(Sqlda,i)) + "|"
                                        Case typetime!
                                                Return_String = Return_String + String(GetDynamicTime(Sqlda,i)) + "|"
                                        Case typedatetime!
                                                Return_String = Return_String + String(GetDynamicDatetime(Sqlda,i)) + "|"
                                End Choose
                        Next

                        Fetch Cur_Procedure Using Descriptor Sqlda;
                Loop
        End If

        Close Cur_Procedure;

论坛徽章:
0
5 [报告]
发表于 2004-11-29 09:58 |只看该作者

在PB中执行存储过程的问题

我也遇到过这样的问题,一直返回100,
后来干脆把sqlca.sqlcode <>; 0 改成 < 0
查了一下,虽然还是返回100,但是存储过程已经执行了.

论坛徽章:
0
6 [报告]
发表于 2004-11-29 11:43 |只看该作者

在PB中执行存储过程的问题

确实是返回100我倒是没有让他执行,我也试试,看结果怎样我再来讨教

论坛徽章:
11
数据库技术版块每日发帖之星
日期:2016-06-25 06:20:00数据库技术版块每日发帖之星
日期:2016-06-24 06:20:00数据库技术版块每日发帖之星
日期:2016-05-03 06:20:00数据库技术版块每日发帖之星
日期:2016-04-21 06:20:00数据库技术版块每日发帖之星
日期:2016-01-23 06:20:00数据库技术版块每日发帖之星
日期:2015-12-03 06:20:00综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-19 06:20:00数据库技术版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15数据库技术版块每日发帖之星
日期:2016-07-30 06:20:00
7 [报告]
发表于 2004-11-29 13:24 |只看该作者

在PB中执行存储过程的问题

呵呵~~~
作个试验看看procedure到底有没有执行

论坛徽章:
0
8 [报告]
发表于 2004-11-29 17:38 |只看该作者

在PB中执行存储过程的问题

我在isql下执行过没问题,执行结果一切正常,转到PB中就没戏了,传递的参数我也检测没有问题,不知哪里有毛病
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP