程序调用存储过程出错

时迈 2017-05-20 08:29:23
这个是程序
//string ls_xh
string ls_isbn
string ls_sm
string ls_zz
string ls_jg
string ls_lbbh
string ls_cbs
string ls_cbrq
string li_sl
//ls_xh=sle_1.text
// if ls_xh='' or isnull(ls_xh) then
// MessageBox('系统提示','请正确的输入序号')
// return
// end if
ls_isbn=sle_2.text
if ls_isbn='' or isnull(ls_isbn) then
MessageBox('系统提示','请正确的输入isbn')
return
end if
ls_sm=sle_3.text
if ls_sm='' or isnull(ls_sm) then
MessageBox('系统提示','请正确的输入书名')
return
end if
ls_zz=sle_4.text
if ls_zz='' or isnull(ls_zz) then
MessageBox('系统提示','请正确的输入作者')
return
end if
ls_jg=sle_5.text
if ls_jg='' or isnull(ls_jg) then
MessageBox('系统提示','请正确的输入价格')
return
end if
ls_lbbh=sle_6.text
if ls_lbbh='' or isnull(ls_lbbh) then
MessageBox('系统提示','请正确的输入类别编号')
return
end if
ls_cbs=sle_7.text
if ls_cbs='' or isnull(ls_cbs) then
MessageBox('系统提示','请正确的输入出版社')
return
end if
ls_cbrq=sle_8.text
if ls_cbrq='' or isnull(ls_cbrq) then
MessageBox('系统提示','请正确的输入出版日期')
return
end if
li_sl=sle_9.text
if li_sl='' or isnull(li_sl) or li_sl='0'then
MessageBox('系统提示','请正确的输入数量')
return
end if
dec ld_jg
ld_jg=dec(sle_5.text)
dec ld_sl
ld_sl=dec(sle_9.text)

DECLARE abc_proc1 PROCEDURE FOR p_bm_book_info @t_isbn=:sle_2.text,@t_sm=:sle_3.text,@t_zz=:sle_4.text,@t_jg=:ld_jg,@t_lbbh=:sle_6.text,@t_cbs=:sle_7.text,@t_cbrq=:sle_8.text,@t_sl=:ld_sl;
EXECUTE abc_proc1;
MessageBox('系统提示',SQLCA.SQLCODE)
if SQLCA.SQLCODE =0 THEN
commit;
MESSAGEBOX("提示","保存成功")
else
rollback;
MESSAGEBOX("错误","保存失败,错误代码为 "+ sqlca.sqlerrtext+"'")
return
end if
close abc_proc1;



这个是存储过程
USE [pnyy]
GO
/****** Object: StoredProcedure [dbo].[p_bm_book_info] Script Date: 05/20/2017 07:42:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER Procedure [dbo].[p_bm_book_info]

@t_isbn varchar(30),
@t_sm varchar(100),
@t_zz varchar(50),
@t_jg decimal(18, 2),
@t_lbbh varchar(2),
@t_cbs varchar(100),
@t_cbrq varchar(10),
@t_sl int
as
declare @rowcount varchar(100)
begin
insert into bm_book_info(isbn,sm,zz,jg,lbbh,cbs,cbrq,sl) values (@t_isbn,@t_sm,@t_zz,@t_jg,@t_lbbh,@t_cbs,@t_cbrq,@t_sl)
select @rowcount=count(sm) from bm_book_info where sm=@t_sm

end
if @rowcount = 1
return 1
else
return @@error

但是从程序中调用是会提示transaction not connected,sql.sqlcode为-1
请问是什么问题?
...全文
1519 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
r00_a2lBUR 2017-07-03
  • 打赏
  • 举报
回复
可以用sqlca的handle检查一下sqlca是否有连接。
hxbkkk 2017-05-24
  • 打赏
  • 举报
回复
对,检查有没有连接数据库哇
时迈 2017-05-23
  • 打赏
  • 举报
回复
引用 2楼WorldMobile 的回复:
sqlca这个全局变量未连接数据库,你需要先连接数据库,再执行存储过程
怎么连接?具体说下呗,我是小白
shinesky 2017-05-23
  • 打赏
  • 举报
回复
SQLCA.DBMS = "ADO.Net" //接口,还可以有ODBC等不同接口 SQLCA.LogPass = 密码 SQLCA.LogId = 用户 SQLCA.AutoCommit = true //自动提交 SQLCA.DBParm = "Namespace='System.Data.OleDb',Provider='SQLOLEDB',DataSource='服务器',Database='你的数据库',NCharBind=1" //连接各属性,不同接口,写法不同 connect using sqlca; 关于sqlca,还是百度了解一下的好,网上的资源很多。
WorldMobile 2017-05-22
  • 打赏
  • 举报
回复
sqlca这个全局变量未连接数据库,你需要先连接数据库,再执行存储过程
shinesky 2017-05-22
  • 打赏
  • 举报
回复
提示很清楚了,sqlca是不是没有connect 呀

752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧