当前位置: 代码迷 >> PB >> pb调用存储过程的有关问题
  详细解决方案

pb调用存储过程的有关问题

热度:59   发布时间:2016-04-29 08:30:03.0
pb调用存储过程的问题
在网上看到了个流水号的存储过程
create table ident(value int)
insert ident select 0

----创建存储过程
CREATE PROCEDURE usp_getNo (@no char(8) output)  
as 
declare @value int
update ident 
set @value=value=value+1
set @no=+RIGHT(ltrim([email protected]),8)

然后再PB调用
long ll_Row 
  String ls_cSerialNo 
 
  DECLARE Procedure_1 PROCEDURE FOR usp_getNo @cSerialNo=:ls_cSerialNo OUTPUT; 
  EXECUTE Procedure_1 ; 
  fetch Procedure_1 into :ls_cSerialNo; 
  CLOSE Procedure_1; 
  messagebox( " ",ls_cSerialNo) 
 老返回空 就在 这 EXECUTE Procedure_1 ; 看了下它执行的sqlcode 报错 信息是
向存储过程传递变量时不能使用OUTPUT选项
在网上找了下 也没有看到具体怎么解决的求指教


------解决方案--------------------
DECLARE Procedure_1 PROCEDURE FOR usp_getNo @no=:ls_cSerialNo OUTPUT;
------解决方案--------------------
ls_cSerialNo 为null ?
需要赋值吧.
------解决方案--------------------
13.调用SQL Server存储过程问题(通过ODBC连接sqlserver数据库调用存储过程并获得return或output的值)
1、新建一个standard class,并在select standard class type 中选择transaction,这时会打开一个声明函数的窗口
2、在上面的窗口上选择底部的 Declare instance variables 页,在变量类型的下拉框中选择 Local External Functions
3、在空白处右键选择aste -> SQL->remote stored procedure,回出现选择存储过程的窗口,选择即可生成函数
如: CREATE PROCEDURE sp_test (@pinput varchar(10))
 AS
return 1000
GO
选择sp_test的时候生成如下函数声明
function long sp_test(string pinput) RPCFUNC ALIAS FOR "dbo.sp_test"
4、保存你的对象为:uo_tran
5、双击打开应用,选择additional properties ->variable types,修改SQLCA中的 transaction为uo_tran即可
6、然后你在程序中就可以象使用函数一样调用您的存储过程,如:
integer li_return

li_return=Sqlca.sp_test('111')
保证能用,无论是ODBC还是直连,


------解决方案--------------------
探讨
DECLARE Procedure_1 PROCEDURE FOR usp_getNo @no=:ls_cSerialNo OUTPUT;

------解决方案--------------------
sqlca.autocommit = trueDECLARE Procedure_1 PROCEDURE FOR usp_getNo @No=:ls_cSerialNo OUTPUT;
EXECUTE Procedure_1 ;
fetch Procedure_1 into :ls_cSerialNo;
CLOSE Procedure_1;
messagebox( " ",ls_cSerialNo)
sqlca.autocommit = false
------解决方案--------------------
从2011年7月23日开始,到了每天凌晨,7月22日以后发的帖子和回复的帖子都会被CSDN恶意的沉掉。每天早上上论坛,帖子列表中能看到的帖子的最后更新日期最晚是7月22日。这无疑让很多提问者的帖子无法被大家浏览,进而无法及时给予解答。

希望 版主:lzp_lrp 能够帮忙反映问题!!!

从“我的社区 → 我回复的帖子”中,可以正常的看到自己回复过的帖子,所以我决定每天手动将我回复过得帖子重新顶起来,希望大家理解并支持我的做法。

希望看到的人,可以帮忙顶一下,毕竟我只能连续砌三楼

最近回复过的帖子,被CSDN给沉了,重新顶起

------解决方案--------------------
帮顶!!!!!
  相关解决方案