ASE在PB中建立临时表并在调用的存储过程中二次调用的疑问

sybasebbs 2013-05-09 02:01:43
主要代码如下:
————————
///生成临时表
ls_sql = "create table #temp_rcvord (" + &
"rcv char(40) not null," + &
"ord char(40) not null," + &
"item int not null," + &
"dat datetime not null," + &
"priceterm char(10) null)"
EXECUTE IMMEDIATE :ls_sql USING SQLCA;
sqlca.of_commit()
lb_temp = true

//
FOR k = 1 to upperbound(ll_rowcount)
li_itemid = dw_form.getitemNumber(ll_rowcount[k],"pchs_ordit_id")
sqlca.autocommit = true
DECLARE up_temp PROCEDURE FOR up_pchsord_genrcv //使用到临时表#temp_rcvord
@arg_ordid = :ls_ordid,
@arg_item = :li_itemid
Using sqlca;
Execute up_temp;


If SQLCA.sqlcode < 0 then
messagebox("提醒","!")
lb_temp = false
end if
sqlca.autocommit = false
CLOSE up_temp ;
sqlca.of_commit()
next

IF lb_temp then
DECLARE up_temp1 PROCEDURE FOR up_pchsord_rcvafter //使用到临时表#temp_rcvord
using sqlca;
Execute up_temp1 ;
CLOSE up_temp1 ;
sqlca.of_commit()
End if


IF lb_temp then
messagebox("成功","!")
End if

//删除临时表
ls_sqldrop = "drop table #temp_rcvord"
EXECUTE IMMEDIATE :ls_sqldrop USING SQLCA;
sqlca.of_commit()


以上是主要代码,使用环境:PB9及ASE12.5 10430目前的困惑:
1、以上代码, 在上面的环境中有时候不正常,当然平时都正常;
2、如果升级ASE到11449EBF,肯定不正常。
请教这一般是什么问题?
...全文
152 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sybasebbs 2013-05-13
  • 打赏
  • 举报
回复
引用 10 楼 WWWWA 的回复:
将PB中临时表生成物理表,再调用SP,看看问题出在什么地方
这个办法好像不错。想办法测试一下看。
WWWWA 2013-05-13
  • 打赏
  • 举报
回复
将PB中临时表生成物理表,再调用SP,看看问题出在什么地方
sybasebbs 2013-05-13
  • 打赏
  • 举报
回复
因为是在存储过程里执行的,看不到提示。 主键肯定不会重复的。 因为要调用PB里的一个临时表,这个存储过程好像没办法单独执行的。
WWWWA 2013-05-13
  • 打赏
  • 举报
回复
插入不成功是否有提示,PART_ID是主键,重复?是单独运行SP?
sybasebbs 2013-05-11
  • 打赏
  • 举报
回复
经过测试,在调用的存储中有这么一段在表里插入数据的处理: insert AA(PART_ID) select (@arg_currency) -- insert AA(PART_ID) select (convert(char(12),@arg_rcvitemamnt)) insert AA(PART_ID) select (@arg_pack) insert AA(PART_ID) select (convert(char(12),@arg_itemprice)) -- insert AA(PART_ID) select (convert(char(12),@arg_itemtaxrate)) -- insert AA(PART_ID) select (@arg_sorc) insert AA(PART_ID) select (@arg_to) INSERT INTO F_TABAA ( PCHSRCV_ID, PART_ID, TABUT_ID, TABUT_FRGN, TABUT_AMNT, TABUT_DLVR, TABUT_PACK, TABUT_BULK, TABUT_GW, TABUT_NW, TABUT_PCS, TABUT_PRICE, TABUT_TAXRATE, TABUT_QUALITY, TABUT_TRANSCAT, TABUT_TO, TABUT_ORIGID, TABUT_ORIGIT, TABUT_COMMENT ) VALUES (@arg_rcvid, @arg_part, @arg_seq, @arg_currency, @arg_rcvitemamnt, @arg_rcvitemamnt, @arg_pack, 0.0, 0.0, 0.0, 0, @arg_itemprice, @arg_itemtaxrate, null, @arg_sorc, @arg_to, null, null, null) insert AA(PART_ID) select ('0031') 关于insert AA表里的数据是用来测试的。经过测试 0031的有时候会插入成功,有时候却不会,不知道这样的问题一般是什么原因造成的。
sybasebbs 2013-05-09
  • 打赏
  • 举报
回复
存储过程搞定了,在相应的存储过程里加了一个语句,测试了一下。 根据就没有执行过去。
wwwwb 2013-05-09
  • 打赏
  • 举报
回复
这种情况建议在SP中建立临时表 OR 不使用临时表,直接用物理表
sybasebbs 2013-05-09
  • 打赏
  • 举报
回复
ase FOR WIN 12.5 10430 PB 9.03 还有个麻烦事,就是存储过程 中调用到临时表,但是这个临时表是在PB里建立的,也就是说在修改存储过程直接保存的时候,会提示找不到临时表。
wwwwb 2013-05-09
  • 打赏
  • 举报
回复
只有分步调试,临时表是否创建成功,变量(参数)值是否正常,可插入 表中保存,以备检查 ASE、PB什么版本
sybasebbs 2013-05-09
  • 打赏
  • 举报
回复
没成功跟成功在程序里返回都一样
wwwwb 2013-05-09
  • 打赏
  • 举报
回复
不正常时提示什么

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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