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
)
错误为:
Msg 156,Level 15,State 1,Line 1关键字附近的语法不正确'或'。
当我删除"OR REPLACE"时,错误为
Msg 156,Level 15,State 1,Procedure UPDATE_REFS_p,Line 3[批次起始行0]关键字"in"附近的语法不正确。
CREATE PROCEDURE "SECURITY"."UPDATE_REFS_P"
@pIdProcessExec bigint,
@pProcessDate DATE,
@pDebugMode integer default 0,
@pCallingInterface varchar(200) default 'Manual',
@pCheckResult integer OUT
或
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
解释:
您的语句语法适用于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