22,207
社区成员
发帖
与我相关
我的任务
分享
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
CREATE DEFAULT [ schema_name . ] default_name
AS constant_expression [ ; ]