CREATE OR REPLACE PROCEDURE "SECURITY"."UPDATE_REFS_P"
(
in pIdProcessExec bigint,
in pProcessDate DATE,
in pDebugMode integer default 0,
in pCallingInterface varchar(200) default 'Manual',
out pCheckResult integer
)
错误是:
消息156,级别15,状态1,第1行关键字附近的语法不正确 “或”。
当我删除“ OR REPLACE”时,错误是
消息156,级别15,状态1,过程UPDATE_REFS_P,第3行[批处理 起始行0]关键字'in'附近的语法不正确。
答案 0 :(得分:0)
CREATE PROCEDURE "SECURITY"."UPDATE_REFS_P"
@pIdProcessExec bigint,
@pProcessDate DATE,
@pDebugMode integer default 0,
@pCallingInterface varchar(200) default 'Manual',
@pCheckResult integer OUT
OR
ALTER PROCEDURE "SECURITY"."UPDATE_REFS_P"
@pIdProcessExec bigint,
@pProcessDate DATE,
@pDebugMode integer default 0,
@pCallingInterface varchar(200) default 'Manual',
@pCheckResult integer OUT
另一个变体
IF OBJECT_ID(SECURITY.UPDATE_REFS_P) IS NOT NULL
DROP PROC SECURITY.UPDATE_REFS_P
GO
CREATE PROCEDURE "SECURITY"."UPDATE_REFS_P"
@pIdProcessExec bigint,
@pProcessDate DATE,
@pDebugMode integer default 0,
@pCallingInterface varchar(200) default 'Manual',
@pCheckResult integer OUT
答案 1 :(得分:0)
说明:
您的语句语法适用于PL / SQL(Oracle)。错误消息来自MS SQL Server。如果要将此语句转换为T-SQL(MS SQL Server),则必须使用此语句(SECURITY
必须是您的架构名称或使用dbo
作为架构名称):
CREATE PROCEDURE [SECURITY].[UPDATE_REFS_P]
@pIdProcessExec bigint,
@pProcessDate date,
@pDebugMode integer = 0,
@pCallingInterface varchar(200) = 'Manual',
@pCheckResult integer OUTPUT
AS
BEGIN
...
END
和
ALTER PROCEDURE [SECURITY].[UPDATE_REFS_P]
@pIdProcessExec bigint,
@pProcessDate date,
@pDebugMode integer = 0,
@pCallingInterface varchar(200) = 'Manual',
@pCheckResult integer OUTPUT
AS
BEGIN
...
END
扩展语法OR ALTER适用于Azure SQL数据库和SQL Server(从SQL Server 2016(13.x)SP1开始)。
工作示例:
CREATE PROCEDURE [dbo].[UPDATE_REFS_P]
@pIdProcessExec bigint,
@pProcessDate date,
@pDebugMode integer = 0,
@pCallingInterface varchar(200) = 'Manual',
@pCheckResult integer OUTPUT
AS
BEGIN
-- Default value as resultset
SELECT @pCallingInterface AS [TEXT]
-- Output parameter value
SELECT @pCheckResult = 123
--
RETURN 0
END