SqlServer知识点
在公司天天写Sql写,存储过程,但是公司工具模板把创建的语句都写好了,只负责写里面的逻辑,久而久之,创建语句都不会写了。还有一些知识点都很模糊,平常使用的时候都不清楚,稀里糊涂的就在用。在这里整理一下。巩固复习。
一.存储过程。
1.存储过程类似编程语言的里面的函数,方法。将Sql语句封装在里面,方便调用。
2.首先看下创建无参数存储过程语法。
CREATE PROCEDURE MyProTest AS SELECT * FROM dbo.saUser GO
创建有参数的存储过程
CREATE PROCEDURE MyProTest ( @ID INT=0 ) WITH ENCRYPTION /* { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]*/ AS SELECT * FROM dbo.saUser GO
这个地方后面WITH后面跟的值要说明下
a.RECOMPILE 表明 SQL Server 不会缓存该过程的计划,该过程将在运行时重新编译。在使用非典型值或临时值而不希望覆盖缓存在内存中的执行计划时,请使用 RECOMPILE 选项。
b.ENCRYPTION 表示 SQL Server 加密 syscomments 表中包含 CREATE PROCEDURE 语句文本的条目。使用 ENCRYPTION 可防止将过程作为 SQL Server 复制的一部分发布。 说明 在升级过程中,SQL Server 利用存储在 syscomments 中的加密注释来重新创建加密过程。 说白了就是就是对存储过程进行加密。这个我经常用,上面以恶就不经常用了,在这里了解一下。
3.执行存储过程
EXEC dbo.MyProTest @ID=1
4.删除存储过程
DROP PROC dbo.MyProtest
删除语法简单说一下。不管删除表,还是存储过程,还是视图,还是函数。删除语法都是 Drop 关键字 +类型+名称。
二.函数
1.创建语法
a.返回Nvarchar类型参数
CREATE FUNCTION Test ---创建语法 Create关键字 +类型 +名称 ( @iIden INT ---参数 ) RETURNS NVARCHAR(50) --定义返回类型 WITH ENCRYPTION AS BEGIN DECLARE @sUserName NVARCHAR(50) SELECT @sUserName=A.sUserName FROM dbo.saUser A(NOLOCK) WHERE A.iIden=@iIden RETURN @sUserName
END
b.返回表变量的函数
CREATE FUNCTION Test ---创建语法 Create关键字 +类型 +名称 ( @iIden INT ---参数 ) RETURNS @Table TABLE( iiden INT, sName NVARCHAR(50) ) WITH ENCRYPTION AS BEGIN DECLARE @sUserName NVARCHAR(50) INSERT INTO @Table SELECT A.iIden,A.sUserName FROM dbo.saUser A(NOLOCK) WHERE A.iIden=@iIden RETURN END
世上本来没有路,走的人多了,就是路了。世上也没有绝对的真理,你成功了,你就是真理。