SQL视图可以这样嵌套定义吗???

测试NULL 2008-06-10 10:02:08

--SQL视图可以像下面这样嵌套定义吗???

create view vi_outer
as
...
create view vi_inner
as
...


--可否在定义一个视图时在其内部再定义一个视图,
--就像在 Java 中定义嵌套类 或 内部类一样呢???
...全文
351 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
测试NULL 2008-06-11
  • 打赏
  • 举报
回复
太谢谢了!!!!!!
fcuandy 2008-06-10
  • 打赏
  • 举报
回复
其它数据库不清楚。

sql server中可以变相来支持,不过意义不大。


IF object_id('p') IS NOT NULL
DROP TABLE p

CREATE TABLE p(id INT,v VARCHAR(10))
GO
INSERT p SELECT 1,'a'


IF object_id('tb') IS NOT NULL
DROP TABLE tb
CREATE TABLE tb(id INT,n VARCHAR(10))
GO
INSERT tb SELECT 2,'b'
GO


/*
比如,你希望的是

CREATE VIEW v
AS
BEGIN
CREATE VIEW vi
AS
BEGIN
SELECT * FROM p
END

SELECT * FROM tb

END

那么可以用以下变相的方式来实现
*/


CREATE PROC pr
AS
BEGIN
IF object_id('vi') IS NOT NULL
DROP VIEW vi
EXEC('CREATE VIEW vi
AS
SELECT * FROM p')
SELECT * FROM vi
END
GO

CREATE VIEW v
AS
SELECT * FROM OPENROWSET('MSDASQL',
'DRIVER={SQL Server};SERVER=(local);UID=sa;PWD=bd5178',tst.dbo.p) AS a WHERE 1=0
UNION ALL
SELECT * FROM tb
GO

SELECT * FROM v

DROP VIEW v
GO


DROP PROC pr
GO

duanzhi1984 2008-06-10
  • 打赏
  • 举报
回复
不可以嵌套!

你直接设置两个VIEW就可以了啊。

Create view A
as
..........


Create view B
as
select *from A 条件......

测试NULL 2008-06-10
  • 打赏
  • 举报
回复
可否告诉小弟有支持这样嵌套定义的 SQL 语句的数据库吗?
谢谢各位了!!!
pt1314917 2008-06-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fcuandy 的回复:]
t-sql不支持。
[/Quote]
fcuandy 2008-06-10
  • 打赏
  • 举报
回复
t-sql不支持。
wzy_love_sly 2008-06-10
  • 打赏
  • 举报
回复
CREATE DEFAULT [ schema_name . ] default_name 
AS constant_expression [ ; ]


应该是不能

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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