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

雄关漫道真如铁, 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,好象没有办法做到啊? 哪位大哥可以教一下? 谢谢
...全文
525 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
結論是: SYBASE 不支持這個功能,只好轉MS SQLSERVER了. 結貼,大家接分吧
WorldMobile 2004-12-10
  • 打赏
  • 举报
回复
Sybase数据库肯定没问题的,有可能的是你的数据库安装的有问题,或者未完全安装,或者功能有限制
  • 打赏
  • 举报
回复
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 ...
  • 打赏
  • 举报
回复
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

...............
  • 打赏
  • 举报
回复
出錯如下 :
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,不是很清楚
  • 打赏
  • 举报
回复
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出问题了?

754

社区成员

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

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