靠近'的语法不正确;更换';使用MSSQL

靠近'的语法不正确;更换';使用MSSQL,sql,sql-server,oracle,replace,liquibase,Sql,Sql Server,Oracle,Replace,Liquibase,我已通过liquibase将oracle数据库迁移到Microsoft SQL Server,但仍有一些SQL语句不起作用。这一个在oracle中看起来像这样: CREATE OR REPLACE VIEW "BP_RESULTS_VIEW" ( BP_ID, RES_NAME, RES_LONG_NAME,

我已通过liquibase将oracle数据库迁移到Microsoft SQL Server,但仍有一些SQL语句不起作用。这一个在oracle中看起来像这样:

CREATE OR REPLACE VIEW "BP_RESULTS_VIEW" (
BP_ID,                                     
RES_NAME,                                     
RES_LONG_NAME,                                     
MEDIAN,                                    
LOW_HINGE,                                 
HIGH_HINGE,                                
H_SPREAD,                                  
INNER_FENCE_LOW,                           
INNER_FENCE_HIGH,
OUTER_FENCE_LOW,
OUTER_FENCE_HIGH,
LOW_NOTCH,
HIGH_NOTCH,
LOW_ADJACENT_VALUE,
HIGH_ADJACENT_VALUE)
  AS 
SELECT 
r.BP_ID,                                     
rv.RES_NAME,                                     
rv.RES_LONG_NAME,                                     
r.MEDIAN,                                    
r.LOW_HINGE,                                 
r.HIGH_HINGE,                                
r.H_SPREAD,                                  
r.INNER_FENCE_LOW,                           
r.INNER_FENCE_HIGH,
r.OUTER_FENCE_LOW,
r.OUTER_FENCE_HIGH,
r.LOW_NOTCH,
r.HIGH_NOTCH,
r.LOW_ADJACENT_VALUE,
r.HIGH_ADJACENT_VALUE
FROM 
bp_results r, 
results_view_display rv 
WHERE 
CAST (rv.value AS INT) = r.bp_id AND 
rv.type = 'BOX';
将其迁移到Microsoft SQL Server后,如下所示:

CREATE OR REPLACE FORCE VIEW BP_RESULTS_VIEW (BP_ID, RES_NAME, RES_LONG_NAME, MEDIAN,
LOW_HINGE, HIGH_HINGE, H_SPREAD, INNER_FENCE_LOW, INNER_FENCE_HIGH,
OUTER_FENCE_LOW, OUTER_FENCE_HIGH, LOW_NOTCH, HIGH_NOTCH, 
LOW_ADJACENT_VALUE, HIGH_ADJACENT_VALUE) AS SELECT 
r.BP_ID,                                     
rv.RES_NAME,                                     
rv.RES_LONG_NAME,                                     
r.MEDIAN,                                    
r.LOW_HINGE,                                 
r.HIGH_HINGE,                                
r.H_SPREAD,                                  
r.INNER_FENCE_LOW,                           
r.INNER_FENCE_HIGH,
r.OUTER_FENCE_LOW,
r.OUTER_FENCE_HIGH,
r.LOW_NOTCH,
r.HIGH_NOTCH,
r.LOW_ADJACENT_VALUE,
r.HIGH_ADJACENT_VALUE
FROM 
bp_results r, 
results_view_display rv 
WHERE 
CAST (rv.value AS INT) = r.bp_id AND 
rv.type = 'BOX'
GO
但当我想要执行它时,总是会出现以下错误:

Incorrect syntax near 'REPLACE'.

我不明白为什么,因为SQL Server中也存在REPLACE语句。它似乎也无法识别CAST命令。我使用的是Microsoft SQL Server Management Studio 17

SQL Server不支持
创建或替换视图


而是第一次创建视图。然后只需使用
alterview
。这是最简单的方法。您还可以删除视图并重新创建它。

SQL Server不支持
创建或替换视图


而是第一次创建视图。然后只需使用
alterview
。这是最简单的方法。您还可以删除视图并重新创建它。

在SQL Server 2016 SP1及更高版本(包括Azure SQL数据库)中,用于等效功能。在早期的SQL Server版本中,必须先删除视图,然后
创建视图
授予权限。

在SQL Server 2016 SP1及更高版本(包括Azure SQL数据库)中,用于等效功能。在早期的SQL Server版本中,必须先删除视图,然后
创建视图
授予权限。

替换
在SQL Server中使用的原因不同。您可以使用
CREATE VIEW
ALTER VIEW
——您应该使用实际连接,而不是通过where子句连接。发展您在哪里发现
create或replace
replace
在SQL Server中用于不同的原因。您可以使用
CREATE VIEW
ALTER VIEW
——您应该使用实际连接,而不是通过where子句连接。发展您在哪里发现
create或replace
不支持创建视图?我想您的意思是“不支持创建或替换视图”。不支持创建视图?我想您的意思是“不支持创建或替换视图”。