我正在尝试创建一个安装脚本来一次安装多个视图。我尝试了通过网络找到的一些建议,但没有成功。该脚本将安装 6 个视图和一个索引。
USE [DB_NAme]
GO
SET XACT_ABORT ON
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
Run Code Online (Sandbox Code Playgroud)
在脚本顶部
我尝试过的事情:
BEGIN TRANSACTION
CREATE VIEW [schema].[View_Name]
COMMIT TRANSACTION
Run Code Online (Sandbox Code Playgroud)
错误,因为“CREATE VIEW”必须是查询批中的第一个语句。
BEGIN TRANSACTION
BEGIN TRY
CREATE VIEW [schema].[View_Name]
END TRY
BEGIN CATCH
ERR CODE
END CATCH
COMMIT TRANSACTION
Run Code Online (Sandbox Code Playgroud)
还有一些其他的变化。
寻找一种在一个 .sql 文件中创建多个视图的方法:
检查并删除/创建索引检查并删除视图创建视图.. 其中 7 个
出于性能原因,我的数据库中有一个物化视图。环境的约束已经改变,现在我需要使更新出现得更快,视图本身的性能不再那么重要。如何将物化视图更改为常规视图?寻找类似的东西:
ALTER MATERIALIZED VIEW viewname TO VIEW
Run Code Online (Sandbox Code Playgroud) 我有以下存储过程创建一个视图:
ALTER PROC Proc_Guards_By_Client
(
@client_number INT,
@client_name NVARCHAR(16)
)
AS
BEGIN
IF EXISTS(select * FROM sys.views where name = 'vwGuardsByClients')
BEGIN
EXEC ('CREATE VIEW vwGuardsByClients
AS
SELECT TOP 1000
cgt.[guard_id],
sg.first_name,
sg.last_name,
sg.ammunition_quantity
FROM [sws4].[dbo].[client_guard_tracking] cgt
INNER JOIN CLIENTS c
ON c.client_number = cgt.client_number
INNER JOIN security_guard sg
ON sg.guard_id = cgt.guard_id
WHERE cgt.client_number = @client_number
OR c.client_name = @client_name
')
END
ELSE
BEGIN
EXEC ('UPDATE VIEW vwGuardsByClients
SELECT TOP 1000
cgt.[guard_id],
sg.first_name,
sg.last_name,
sg.ammunition_quantity
FROM [sws4].[dbo].[client_guard_tracking] cgt
INNER …Run Code Online (Sandbox Code Playgroud) t-sql stored-procedures dynamic-sql sql-server-2008 sql-view
有没有办法在视图中添加新列并更新它们?
列不在任何表中; 我想从表中选择几列,然后添加几个新列并更新它们.
我试图ALTER VIEW添加列,但它给了我一个错误:
无法更改'viewName',因为它不是表格.
我想更改一个已经存在的视图。Liquibase 中没有像 \changeView 或 \alterView 这样的东西吗?
我已经用 createView 创建了一个视图。我尝试使用谷歌搜索alterview或changeview,但没有任何正确的结果。
这是我的观点
SELECT e.Text AS StatusText,
a.Created AS [DATE],
a.Username,
b.Name AS CustomerName,
c.Name AS ServiceName,
d.Message AS DeviationMessage
FROM dbo.StatusUpdate AS a
LEFT OUTER JOIN dbo.Customer AS b ON a.CustomerId = b.CustomerID
LEFT OUTER JOIN dbo.Service AS c ON a.ServiceId = c.ServiceID
LEFT OUTER JOIN dbo.Deviation AS d ON a.DeviationId = d.DeviationID
LEFT OUTER JOIN dbo.StatusText AS e ON a.Status = e.ID
Run Code Online (Sandbox Code Playgroud)
我想要做的是:当a.Status(int)是2或3时,我想强制a.Username显示为NULL.我该怎么办呢?
create or replace view ABC_VIEW(
VEHICLEID, BRAND,
MODEL, VEHICLE_TYPE,
FUEL_TYPE, TRANSMISSION_TYPE,
GEARBOX, DRIVE_TYPE,
VEHICLE_NUMBER, PRICE,
"TEST Column"
) as
select VEHICLEID, BRAND,
MODEL, VEHICLE_TYPE,
FUEL_TYPE, TRANSMISSION_TYPE,
GEARBOX, DRIVE_TYPE,
VEHICLE_NUMBER, PRICE,
'' as "TEST Column"
from ABC;
Run Code Online (Sandbox Code Playgroud)
默认情况下"Test Column"创建为Char(1).如何将其更改为Number数据类型?
请帮帮我.谢谢.
我要创建一个视图,其中有 2 个 CTES。这就是我在下面所做的。第一部分很好,但是在“AND”之后事情就不起作用了。感谢您的意见
CREATE VIEW dbo.VW.SPAg
AS With today as
(SELECT * FROM dbo.Work_Days
WHERE [Date] = CAST(GETDATE() AS DATE)
)
AND WITH rd as
(SELECT [DATE] AS REP_DATE
FROM dbo.Link_Days
WHERE DAY ([DATE]) = 1
)
SELECT wm *,
gr.DATE_ORDINAL AS Goods_Rcvd_Ordinal
gt.DATE_ORDINAL AS Goods_Trnpt_Ordinal
today.DATE
FROM dbo.SPAg sg
INNER JOIN rd
ON YEAR(sg.Client_Query)= YEAR(rd.REP_DATE)
LEFT JOIN dbo.Work_DAYS gr
ON sg.Goods_Rcvd = gr.[DATE]
LEFT JOIN dbo.Work_DAYS gt
ON sg.Goods_Trnpt = gt.[DATE]
Run Code Online (Sandbox Code Playgroud) I am trying to change a data type of a column in a Oracle View by executing the following statement:
ALTER VIEW <view_name>
MODIFY (ID VARCHAR2(100));
Run Code Online (Sandbox Code Playgroud)
I get the following error:
Error starting at line : 1 in command -
ALTER VIEW <view_name>
MODIFY (ID VARCHAR2(100))
Error report -
ORA-00922: missing or invalid option
00922. 00000 - "missing or invalid option"
*Cause:
*Action:
Run Code Online (Sandbox Code Playgroud)
I referred to the post here. What's the correct way to achieve this? I guess Oracle …
sql-view ×10
sql ×5
oracle ×2
sql-server ×2
t-sql ×2
ddl ×1
dynamic-sql ×1
liquibase ×1
mysql ×1
postgresql ×1
sql-cte ×1
transactions ×1
view ×1