Nov*_*eMe 2 sql stored-procedures
我是创建存储过程的新手,我在下面的现有存储过程中看到了这个sql:
IF EXISTS (SELECT * FROM table WHERE object_id = OBJECT_ID(N'stored_proc_name') AND type in (N'P', N'PC'))
DROP PROCEDURE 'stored_proc_name' Go
Run Code Online (Sandbox Code Playgroud)
经过一些调查后,我发现我们正在使用N来表示可能出现的任何unicode字符.但是,我不确定为什么我们使用"输入(N'P',N'PC')"?
任何人都可以解释这个结构吗?
还要确认一下我在考虑使用N的方法是否正确?
是的,N表示字符串是unicode.
你还有什么是in运算符,即n in (n, ...)第一个操作数是字段的位置type,括号中的值是两个unicode字符串.
所以,它的含义相同and (type = N'P' or type = N'PC').
要添加到其他答案:
您正在检查对象[dbo].[sp_NAME]是否存在,并且是存储过程(P)还是程序集存储过程(PC).
以下是我们使用的示例:
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sp_NAME]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[sp_NAME]
GO
Run Code Online (Sandbox Code Playgroud)
下面是一个类似的问题的答案.