初学请教:如何在SELECT中调用存储过程

callingda 2004-12-03 10:56:47
以前是在ASA中,定义如下:
create Function f_get_custsname(in @custno char(10))
returns char(20)
begin
declare @custsname char(20);
select custsname into @custsname from customer where custno = @custno;
return @custsname;
end
然后在另外的SELECT中就可以用:
select a.doccno , f_get_custsname(a.custno) as custsname from tablename as a where ...

现在转到Sybase11,好象没有办法做到啊? 哪位大哥可以教一下? 谢谢
...全文
384 点赞 收藏 16
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
callingda 2004-12-30
結論是: SYBASE 不支持這個功能,只好轉MS SQLSERVER了. 結貼,大家接分吧
回复
WorldMobile 2004-12-10
Sybase数据库肯定没问题的,有可能的是你的数据库安装的有问题,或者未完全安装,或者功能有限制
回复
callingda 2004-12-06
to kinglaw(wang) :
你的SYBASE是哪個版本的? 能支持函數呀, 我試了就是因為它不支持函數啊.
我的數據窗口很多數據源SELECT語句甚至存儲過程的SELECT中都有類似嵌套調用函數當成列的情況, 如果這個問題不能解決的話,太痛苦了
回复
zhangdatou 2004-12-06
挺协胡的`~~
回复
aichangfeng 2004-12-06
我们先也是用SQL2000,后转到sysbase所有函数不支持
回复
aichangfeng 2004-12-06
sysbase中是不支持函数的,你最好将那个函数改写成存储过程
回复
hygougou 2004-12-05
ase 的存储过程返回成功都为0,参数返回只能如此定义
建议你用数据窗口,数据源为存储过程
回复
kinglaw 2004-12-05
1、存储过程只能返回long
2、用函数。
3、前加dbo.
select a.doccno , dbo.f_get_custsname(a.custno) as custsname from tablename as a where ...
回复
callingda 2004-12-04
TO hygougou(狗狗) :
我知道是象你說的這樣寫啊, 但,請你留意一下, 你這樣寫能達到我的要求嗎?
我用return @custsname, 他不讓,說只能是INT. 我用select @custsname;達不到我的要求, 但,如果按你這種寫法, 將返回做為一個output參數,我怎麼能嵌套用在select 語句中? 例如:

select a.doccno ,a.custno, f_get_custsname(a.custno) as custsname from tablename as a where ...
大家不會要求我寫成
select a.docno,a.custno,b.custsname from tablename as a, customer as b
where a.custno = b.custno and ... 吧? 這一條堅決否定不采用
回复
hygougou 2004-12-04
sybase的返回可不是这样写哦
create procedure f_get_custsname(
@custno char(10)
@coustsname Char(20) output

...............
回复
callingda 2004-12-03
出錯如下 :
Server Message Number: 195
'f_get_custsname' is not a recognized built-in function name.
回复
peter_zy 2004-12-03
原理是一样,如果是出错,那把错误信息发一下
回复
WorldMobile 2004-12-03
应该是可能的,你仔细检查一下,出现什么错误了,把错误信息贴出来,再帮你看看
回复
li_d_s 2004-12-03
反正我再sql2000中是不行的,至于sybase,不是很清楚
回复
callingda 2004-12-03
create procedure f_get_custsname(
@custno char(10)
)
as
declare @custsname char(20)
select @custsname = custsname from customer where custno =
@custno
print @custsname
/* 不給用 return @custsname */
/* 是不是SYBASE 11 不支持啊,我聽說12.5支持, 不知是不是這樣
*/
回复
WorldMobile 2004-12-03
是不是你的f_get_custsname出问题了?
回复
相关推荐
发帖
数据库相关
创建于2007-09-28

734

社区成员

PowerBuilder 数据库相关
申请成为版主
帖子事件
创建了帖子
2004-12-03 10:56
社区公告
暂无公告