急!PB调用及其简单的MS SQL Server2000中带输入输出参数的存储过程。(进者有分)

bobor168 2003-08-22 06:39:13
MS SQL Server2000中存储过程定义如下:
REATE PROCEDURE sp_mult
@a int,
@b int,
@c int output
AS
select @c=@a*@b
GO

PB中脚本如下:
long m,n,r
m = 1
n = 2
r = 3
DECLARE Mult PROCEDURE FOR sp_mult //(:m,:n,:r output)此形式错误提示相同
@a = :m,
@b = :n,
@c = :r OUTPUT
USING SQLCA;

EXECUTE Mult ;
FETCH Mult INTO :r;
if sqlca.sqlcode=0 then
messagebox("提示","执行成功")
else
messagebox("提示","发生错误,原因在" + sqlca.sqlerrtext )
end if
FETCH Mult INTO :r;
CLOSE Mult ;
sle_1.text = string(r) //结果r为3,正确应该为2

Messagebox提示如下:
发生错误,原因在 Cursor is not open
先谢过各位大侠了!!
...全文
44 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
trunman 2003-09-14
  • 打赏
  • 举报
回复
MSSQ2000过程这样写执行如何
===========================
REATE PROCEDURE sp_mult
@a int,
@b int,
@c int output
AS
select @c=@a*@b
select @c
GO
trunman 2003-09-14
  • 打赏
  • 举报
回复
你的代码写的有点问题,只样写执行看看如何。
DECLARE Mult PROCEDURE FOR sp_mult //(:m,:n,:r output)此形式错误提示相同
@a = :m,
@b = :n,
USING SQLCA;

EXECUTE Mult ;
FETCH Mult INTO :r;
CLOSE Mult ;
if sqlca.sqlcode=0 then
messagebox("提示","执行成功")
else
messagebox("提示","发生错误,原因在" + sqlca.sqlerrtext )
end if
sle_1.text = string(r) //结果r为3,正确应该为2
bobor8 2003-09-14
  • 打赏
  • 举报
回复
各位大侠继续呀!
bobor168 2003-08-25
  • 打赏
  • 举报
回复
请问li_d_s(我是小鬼),是这样用吗?
但不对呀!
int n,m,r
m = 1
n = 2
r = 3
SQLCA.sp_mult(m,n,r)
sle_1.text = string(r)
//保存时错误提示:
//Error C0051:Unknown function name: sp_mult
cmcx 2003-08-25
  • 打赏
  • 举报
回复
REATE PROCEDURE sp_mult ?
应该是CREATE PROCEDURE sp_mult 吧?
li_d_s 2003-08-25
  • 打赏
  • 举报
回复
直接一点啦
SQLCA.sp_mult(m,n,r)
连fetch都省了
li_d_s 2003-08-25
  • 打赏
  • 举报
回复
直接一点啦
SQLCA.PROC_ALLOC_ID(m,n,r)
连fetch都省了
bobor168 2003-08-24
  • 打赏
  • 举报
回复
有没有OUTPUT都不行呀!
请问楼上的大侠应该怎么OPEN?
输入参数传递不过去呀!
jackzhang168 2003-08-23
  • 打赏
  • 举报
回复
同意runsoft(清风)
你不需要指定SQLCA,直接fetch
rogery 2003-08-23
  • 打赏
  • 举报
回复
存储过程和游标的用法差不多,也要OPEN先
eddiezhuo 2003-08-22
  • 打赏
  • 举报
回复
select 在存储过程中,做为返回的。
runsoft 2003-08-22
  • 打赏
  • 举报
回复
PB 中要得到返回值,SQLSERVER,必须使用FETCH 得到。OUTPUT,没有什么作用
runsoft 2003-08-22
  • 打赏
  • 举报
回复
你不需要指定SQLCA,因为她不是一个SELECT * from TABLE 语句,直接fetch 就可以

740

社区成员

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

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