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(100000000+@value),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还是直连,
[解决办法]