可以建一个带参数的视图吗?

不假思索 2005-01-12 08:34:11
视图是个动态数据集,数据在运行时才确定,照理和select一样,定义一个带参数的视图应该不是问题吧?但查来查去,没见有这方面的论述或举例。

例如:
creat view as
select *
where column1 = x

如果是 where column1 = 'x'当然没问题,但如果是想在调用视图的时候才决定x的取值怎么办?

这个问题好像又不是问题,因为where可以不用放在视图定义里,而放在视图调用里select view where column1 = x。

但无论从理论上还是从实践上,这样到底型不型?

我用的是Sybase 11.03
...全文
200 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgzymzx 2005-08-02
  • 打赏
  • 举报
回复
当然是不行了
在ado调用的时候用recordset对象来取得
rs.open " execute procedure_name 参数列表 ",constr
wgzymzx 2005-01-16
  • 打赏
  • 举报
回复
sybase的存储过程返回记录集,原则上是不支持的,但是事实上可以这么做,不过有很多限制,如果要想保证正确的的到结果集,只要注意一个原则就可以了:就是除了要返回结果集的select命令,不要直接使用select命令:
procedure tt
as
begin
select id1,id2 from test1
select id1,id2 from test2
end

procedure tt2
as
begin
select id1,id2 from test1 where id1=@id
select id1,id2 from test2 where id2=@id
end
这两个存储过程在选择返回记录集时,其选择的语句是不一样的。

如果想确定需要返回哪个语句,就不要在其它的语句中直接使用select,如,tt2中,如果要想返回第二个select语句的结果集,第一个select语句就不能直接这样使用——不能以select命令开头,具体如何使用,视具体的应用而定
不假思索 2005-01-16
  • 打赏
  • 举报
回复
浣熊:

你的提示对我很有启发,有空我会拭一试。

不过“原则上不支持”又让我很担心,这意味着sybase原则上不保证你能获得预期结果,这个版本能,下个版本呢?

而且view和procedure的用法有很大差别,能在一个select 语句中调用procedure吗?
例如,用view我可以:
select * from view1, view2 where a.view1= b.view2

上面的view可以用procedure代替吗?不行吧。



不假思索 2005-01-15
  • 打赏
  • 举报
回复
辉:

怎么做这个存储过程?
view可以返回一个结果集?存储过程怎么返回?


sssaaaa 2005-01-14
  • 打赏
  • 举报
回复
你说的第一种好象不可以
带参数的VIEW我试了一下好象不行
第二种???
sssaaaa 2005-01-14
  • 打赏
  • 举报
回复
我也正碰到这个问题
zch999 2005-01-14
  • 打赏
  • 举报
回复
不要用view了,改用store procedure 我想一样可以实现你所要求的全部功能

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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