SQL Server 存款和储蓄进度语言

SQL Server 存款和储蓄进程

摘自:http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html

Transact-SQL中的存款和储蓄进程,卓殊接近于Java语言中的方法,它能够再度调用。当存款和储蓄进程推行1遍后,能够将语句缓存中,那样下次实践的时候一贯行使缓存中的语句。那样就足以抓牢存储进程的个性。

Ø 存款和储蓄进度的定义

   
存款和储蓄进度Procedure是一组为了做到一定成效的SQL语句集合,经编写翻译后存款和储蓄在数据库中,用户通过点名存款和储蓄进程的称号并付出参数来实施。

   
存款和储蓄进程中能够涵盖逻辑调控语句和数码垄断语句,它能够承受参数、输出参数、重回单个或八个结果集以及再次来到值。

   
由于存款和储蓄进程在开立刻即在数据库服务器上举办了编写翻译并蕴藏在数据库中,所以存储进程运行要比单个的SQL语句块要快。同时由于在调用时只需用提供仓储进度名和必备的参数音信,所以在肯定程度上也足以减掉互联网流量、轻松互联网负担。

 

    1、 存款和储蓄进度的亮点

        A、 存款和储蓄进度允许标准组件式编制程序

       
存款和储蓄进程创造后方可在程序中被反复调用试行,而不必再一次编辑该存款和储蓄进程的SQL语句。而且数据库专业人士能够随时对存款和储蓄过程进展改换,但对选用程序源代码却不用影响,从而相当的大的增加了先后的可移植性。

        B、 存款和储蓄进度能够落到实处较快的施行进程

       
借使某壹操作包括大批量的T-SQL语句代码,分别被频仍实践,那么存款和储蓄进程要比批处理的施行进程快得多。因为存款和储蓄进程是预编译的,在第贰次运转二个囤积过程时,查询优化器对其开展剖析、优化,并付出最终被存在系统表中的贮存布署。而批处理的T-SQL语句每一回运营都需求预编译和优化,所以速度将要慢1些。

        C、 存款和储蓄进度减轻网络流量

       
对于同一个针对性数据库对象的操作,假使这一操作所提到到的T-SQL语句被集体成1囤积进程,那么当在客户机上调用该存款和储蓄进度时,网络中传送的只是该调用讲话,不然将会是多条SQL语句。从而减轻了网络流量,下跌了网络负载。

        D、 存款和储蓄进程可被看做一种安全部制来丰硕利用

       
系统一管理理员能够对实施的某叁个仓库储存进度实行权力限制,从而能够落到实处对少数数据访问的限制,制止非授权用户对数码的拜访,保障数据的中卫。

 

Ø 系统存款和储蓄进程

   
系统存款和储蓄进度是系统创建的存款和储蓄进程,目的在于能够有利于的从系统表中查询音信或成就与更新数据库表相关的保管任务或任何的系统一管理理任务。系统存款和储蓄进程首要存储在master数据库中,以“sp”下划线开头的囤积进程。纵然那一个连串存款和储蓄进程在master数据库中,但我们在别的数据库还能够调用系统存款和储蓄进度。有一部分种类存款和储蓄进程会在成立新的数据库的时候被机关成立在现阶段数据库中。

    常用系统存款和储蓄进度有:

exec sp_databases; --查看数据库
exec sp_tables;        --查看表
exec sp_columns student;--查看列
exec sp_helpIndex student;--查看索引
exec sp_helpConstraint student;--约束
exec sp_stored_procedures;
exec sp_helptext 'sp_stored_procedures';--查看存储过程创建、定义语句
exec sp_rename student, stuInfo;--修改表、索引、列的名称
exec sp_renamedb myTempDB, myDB;--更改数据库名称
exec sp_defaultdb 'master', 'myDB';--更改登录名的默认数据库
exec sp_helpdb;--数据库帮助,查询数据库信息
exec sp_helpdb master;

    系统存款和储蓄进度示例:

--表重命名
exec sp_rename 'stu', 'stud';
select * from stud;
--列重命名
exec sp_rename 'stud.name', 'sName', 'column';
exec sp_help 'stud';
--重命名索引
exec sp_rename N'student.idx_cid', N'idx_cidd', N'index';
exec sp_help 'student';

--查询所有存储过程
select * from sys.objects where type = 'P';
select * from sys.objects where type_desc like '%pro%' and name like 'sp%';

 

Ø 用户自定义存款和储蓄进度

   一、 创造语法

create proc | procedure pro_name
    [{@参数数据类型} [=默认值] [output],
     {@参数数据类型} [=默认值] [output],
     ....
    ]
as
    SQL_statements

 

   2、 创立不带参数存款和储蓄进程

--创建存储过程
if (exists (select * from sys.objects where name = 'proc_get_student'))
    drop proc proc_get_student
go
create proc proc_get_student
as
    select * from student;

--调用、执行存储过程
exec proc_get_student;

   三、 修改存储进度

--修改存储过程
alter proc proc_get_student
as
select * from student;

   4、 带参存储进程

--带参存储过程
if (object_id('proc_find_stu', 'P') is not null)
    drop proc proc_find_stu
go
create proc proc_find_stu(@startId int, @endId int)
as
    select * from student where id between @startId and @endId
go

exec proc_find_stu 2, 4;

   伍、 带通配符参数存款和储蓄进程

--带通配符参数存储过程
if (object_id('proc_findStudentByName', 'P') is not null)
    drop proc proc_findStudentByName
go
create proc proc_findStudentByName(@name varchar(20) = '%j%', @nextName varchar(20) = '%')
as
    select * from student where name like @name and name like @nextName;
go

exec proc_findStudentByName;
exec proc_findStudentByName '%o%', 't%';

   陆、 带输出参数存款和储蓄进度

if (object_id('proc_getStudentRecord', 'P') is not null)
    drop proc proc_getStudentRecord
go
create proc proc_getStudentRecord(
    @id int, --默认输入参数
    @name varchar(20) out, --输出参数
    @age varchar(20) output--输入输出参数
)
as
    select @name = name, @age = age  from student where id = @id and sex = @age;
go

-- 
declare @id int,
        @name varchar(20),
        @temp varchar(20);
set @id = 7; 
set @temp = 1;
exec proc_getStudentRecord @id, @name out, @temp output;
select @name, @temp;
print @name + '#' + @temp;

 

   7、 不缓存存款和储蓄进程

--WITH RECOMPILE 不缓存
if (object_id('proc_temp', 'P') is not null)
    drop proc proc_temp
go
create proc proc_temp
with recompile
as
    select * from student;
go

exec proc_temp;

   8、 加密存储进程

--加密WITH ENCRYPTION 
if (object_id('proc_temp_encryption', 'P') is not null)
    drop proc proc_temp_encryption
go
create proc proc_temp_encryption
with encryption
as
    select * from student;
go

exec proc_temp_encryption;
exec sp_helptext 'proc_temp';
exec sp_helptext 'proc_temp_encryption';

   九、 带游标参数存款和储蓄进度

if (object_id('proc_cursor', 'P') is not null)
    drop proc proc_cursor
go
create proc proc_cursor
    @cur cursor varying output
as
    set @cur = cursor forward_only static for
    select id, name, age from student;
    open @cur;
go
--调用
declare @exec_cur cursor;
declare @id int,
        @name varchar(20),
        @age int;
exec proc_cursor @cur = @exec_cur output;--调用存储过程
fetch next from @exec_cur into @id, @name, @age;
while (@@fetch_status = 0)
begin
    fetch next from @exec_cur into @id, @name, @age;
    print 'id: ' + convert(varchar, @id) + ', name: ' + @name + ', age: ' + convert(char, @age);
end
close @exec_cur;
deallocate @exec_cur;--删除游标

 

   10、 分页存款和储蓄进度

---存储过程、row_number完成分页
if (object_id('pro_page', 'P') is not null)
    drop proc proc_cursor
go
create proc pro_page
    @startIndex int,
    @endIndex int
as
    select count(*) from product
;    
    select * from (
        select row_number() over(order by pid) as rowId, * from product 
    ) temp
    where temp.rowId between @startIndex and @endIndex
go
--drop proc pro_page
exec pro_page 1, 4
--
--分页存储过程
if (object_id('pro_page', 'P') is not null)
    drop proc pro_stu
go
create procedure pro_stu(
    @pageIndex int,
    @pageSize int
)
as
    declare @startRow int, @endRow int
    set @startRow = (@pageIndex - 1) * @pageSize +1
    set @endRow = @startRow + @pageSize -1
    select * from (
        select *, row_number() over (order by id asc) as number from student 
    ) t
    where t.number between @startRow and @endRow;

exec pro_stu 2, 2;

 

Ø Raiserror

Raiserror重返用户定义的错误音信,可以内定严重等级,设置系统变量记录所发生的谬误。

   语法如下:

Raiserror({msg_id | msg_str | @local_variable}
  {, severity, state}
  [,argument[,…n]]
  [with option[,…n]]
)

   # msg_id:在sysmessages系统表中钦定的用户定义错误新闻

   # msg_str:用户定义的音讯,音信最大尺寸在20四几个字符。

   #
severity:用户定义与该新闻关联的惨重等级。当使用msg_id引发使用sp_addmessage创设的用户定义音讯时,raiserror上钦点严重性将覆盖sp_addmessage中定义的首要性。

   
任何用户能够钦命0-1捌一贯的严重等第。只有sysadmin固定服务器剧中人物常用或富有alter
trace权限的用户技巧钦点1九-二五平素的要紧等第。1玖-25之间的安全等级要求动用with
log选项。

   # state:介于一至1二柒一贯的其它整数。State默许值是一。

raiserror('is error', 16, 1);
select * from sys.messages;
--使用sysmessages中定义的消息
raiserror(33003, 16, 1);
raiserror(33006, 16, 1);

 

 

1. 前言

SharePoint
Framework(SPFx),是页面
和Webpart的模子,完全帮助当地开辟(即完全能够脱离SharPoint环境在本地开始展览开垦),SPFx包涵了一名目许多的client-side
JavaScript类库用于支付你的solution,上面介绍一下用来支付client-side web
parts的工具和类库.

壹.一为啥采纳SPFx

在SharePoint Online出来在此以前,对于SharePoint WebPart的开采,基本上都以编写C# code,然后编译成dll,铺排到客户的Farm中,不过在SPO出来之后那种措施显然已经不可能了,为了消除这一个标题,微软最首要引进了之类二种办法:

  • JavaScript注入格局

在SPO中最常用的Webpart便是Content
艾德itor和Script Editor,你能够应用JSOM大概REST
API读取数据,然后突显在页面上,使用起来相比较便于。然则那种格局照旧有多数的欠缺,例如:

  • 布局起来相比较辛劳。
  • 不能够给客户提供客观的配备分界面,多数陈设消息都以在code中写的。
  • End
    user很轻易相当大心把code修改坏了,导致webpart不办事。

  • 最重大的是Script
    艾德itor并不是”Safe For Scripting”诸多Self-service
    站点都会打开三个NoScript的feature,那样Script
    艾德itor中的脚本会被Block。

  • SharePoint
    add-in方式

时下可比流行的艺术便是采取SharePoint
Host的App
Part的不二等秘书技,那种方法实际上是把webpart做为二个Iframe引入到页面中,AppPart对应的页面实际上运营在3个独立的site里面,那种webpart能够加上到NoScript的站点中。可是那种艺术也有一些欠缺首要如下:

  • 这么些code运营在Iframe中,那种方法会比Script
    艾德itor的艺术慢,因为那种办法索要请求另四个页面,另八个页面也急需张开身份验证等操作。
  • 那种措施很难落成响应式布局,因为那些webpart实际上是在区别的页面中的,并且对于Iframe,Media
    query获得的显示器尺寸实际上是Iframe的增长幅度,并不是确实含义上的显示器宽度

结论:为了消除地点的五个难题,所以微软生产了SharePoint
Framework作为晚辈的开拓方式,开拓流程图:

语言 1

亟需安装配置的软件和环境如下图:

假使接纳Visual
Studio,还索要如下

语言,一.贰支付类库介绍

  • TypeScript

TypeScript是比JavaScript越来越尖端的言语,TypeScript中可以定义数据类型,接口,类,等等并且TypeScript最终得以编写翻译成JavaScript,SharePoint的client-side
development tools就是应用Type Script的类,模型和接口来创设的。
有关TypeSctipt越多的详细消息请见如下链接:

  • JavaScript
    Frameworks

您能够使用比较熟谙的JavaScript框架来
开拓client-side web parts,以下是比较盛行的JS框架:

因为编写client-side
web part多数都以和SharePoint实行交互,所以那边提议我们使用SharePoint PnP JavaScript Core
library
 框架,在那个框架中曾经为大家封装好了繁多大致易用的API。

 

  • Node Package
    Manager (npm)

SharePoint
client-side 开垦工具使用npm来治本依赖以及须求的Js库,安装Node.js会自动安装npm。

 

  • Node.js

Node.js是二个开源,用于运转JavaScript
代码的跨平台运营环境。Node.js类似于IIS
Express和IIS。关于Node.js更加多消息请见上边链接:

  • Gulp task
    runner

SharePoint
client-side 开垦工具使用gulp卷入工具做如下操作:

  • Bundle
    and minify JavaScript and CSS files.

  • Run
    tools to call the bundling and minification tasks before each build.

  • Yeoman
    generators

Yeoman用于创设新的client-side
web
parts的工程,壹旦工程创建完结之后,你能够采用自个儿喜好的IDE举办开辟,常用的IED是Visual
studio Code,Sublime Text大概Atom。愈来愈多消息见如下链接:

  • SharePoint
    REST API

SharePoint
REST
API首要用来和SharePoint环境相互,例如:增加删减修改list中的数据等等。

 

1. 设置配备

二.①安装开拓工具

  1. 安装Node.js
  • 安装NodeJS Long Term Support
    (LTS) v4.x.x (node-v4.5.0-x64.msi)version,安装如下:
![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192126916-957218226.png)

点【Next】下一步,选择选中复选框,如下图:


![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192127306-2093014911.png)

选择安装目录,如下图:


![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192127775-181774183.png)

![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192128197-111211785.png)

![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192128728-1850302687.png)

 

![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192129135-1418309253.png)

 

![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192129760-1838361813.png)
  • 设若已经设置了Node.js,可以用命令行:node -v
    检查下node.js的版本是还是不是符合供给?以管理人身份的法门打开Node.js的指令行如下图:

    语言 2

    语言 3

     

    语言 4

     

    语言 5

  1. 运营安装 npm
    V3,输入命令行:npm install -g
    npm@三,如下图:

    语言 6

    并发如下后,表示早已成功运转npm V三,如下图:

    语言 7

二.2设置编码工具

  1. 安装Visual Studio
    Code

运用代码编辑,大家那边运用Visual Studio
Code
,如下图:

语言 8

 

语言 9

 

语言 10

语言 11

语言 12

语言 13

语言 14

设置到位如下图:

语言 15

  1. 安装windows-build-tools
windows-build-tools
将安装**Visual C++ Build Tools
2015和Python 2.7**,运行如下命令:**npm install -g --production
windows-build-tools,**打开Node.js的命令行,如下图:


![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192137541-1605739767.png)

**开始在线下载工具,并进行自动配置,如下图:**


![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192138119-823915217.png)

 

![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192138588-561974078.png)

 

![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192139260-1454041410.png)

 

![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192139806-1073581220.png)

**开始安装python脚本环境,如下图:**


![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192140275-1608228630.png)

![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192140963-93086667.png)

 

![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192141650-1857811724.png)

最后安装完成,如下图:


![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192142056-590049038.png)

设置编码环境和工具已经到位。

2.3安装Yeoman and gulp

Yeoman支持你从头新的品类,并保持神速和最棒,SharePoint客户端开拓工具包含三个用来创立新的Web部件 Yeoman
generator。那个工具包涵常见的规范代码和三个通用的web站点供host给webpart做测试使用。张开Node.JS命令行输入下命令:

npm
install -g yo gulp

第三回运营运营如下图:

语言 16

 

语言 17

 

语言 18

末尾安装成功如下图:

语言 19

纵然已经安装过,不过先反省下,依然运转该命令行,如下图:

语言 20

2.4安装Yeoman SharePoint generator

The
Yeoman SharePoint web part generator helps you quickly create a
SharePoint client-side solution project with the right toolchain and
project structure.

张开Node.js命令行,运维如下命令:

npm
install -g @microsoft/generator-sharepoint,如下图:

语言 21

初阶安装,如下图:

语言 22

 

语言 23

终极安装实现,如下图:

语言 24

 

只顾:依照实际须要,还能安装如下工具(不是必选的),如下图:

 

1. 创建SharePoint client-side webpart

创建client-side
webpart的流程图如下: 

语言 25

三.一开立新的webpart

创建2个新的Hello
World的WebPart,如下步骤:

  1. 创办三个hello
    word 目录工程,运维如下命令行:md
    helloworld-webpart,如下图:
![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192148478-1251960323.png)

![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192149103-1258472686.png)
  1. 跻身hello
    world的目录,运营命令行:cd
    helloworld-webpart,如下图:
![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192149619-544383352.png)

![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192150275-1871567808.png)
  1. 运作 Yeoman SharePoint
    Generator创设hello world的webpart。运维命令行:yo @microsoft/sharepoint,如下图:

    语言 26

     

    语言 27

    挑选私下认可的或Y,往下走:

![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192152244-1187754292.png)

选择默认的,一路回车往下走:


![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192152900-752012313.png)

![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192153931-175751516.png)

![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192154494-291404993.png)

![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192155431-2011149778.png)

创建完毕,如下图:


![](https://images2015.cnblogs.com/blog/115581/201701/115581-20170111192156025-1878892846.png)

叁.贰预览新创立的webpart

三.二.一创建筑和安装全证书

预览webpart, The
client-side私下认可选拔https实行走访的,暗中同意未有表明在环境中开创,因而SPFx
toolchain可以帮您创制安装1个开垦证书,运行如下命令行:

gulp
trust-dev-cert,运转如下图:

语言 28

回车继续,如下图:

语言 29

挑选【是】则设置证书,如下图:

语言 30

证件安装收尾。

三.二.二运作预览webpart

运用命令行运转预览webPart,运转命令行:gulp
serve,如下图:

语言 31

语言 32

语言 33

选择【IE浏览器】,如下图:

语言 34

 

末段出现IE浏览的workbench,如下图:

语言 35

选择点【+】J进行webpart的添加,如下图:

语言 36

增加webpart后如下图:

语言 37

叁.二.3探视移动端的运营效果

语言 38

只顾:IE1壹下的一个移动端切换,是空荡荡的,可能是个BUG或预览版本的标题,如下图:

语言 39

  1. 手提式有线电话机设备下的效益图:

自家改成搜狗浏览器,选取点【Mobile】Logo实行手提式有线电话机移动端效果(暗许iphone5)查看。如下图:

语言 40

张开手提式有线电话机设备的切换,点击如下图所示:iphone
陆 plus

语言 41

在切换成Lumia
520下的效劳,如下图:

语言 42

 

  1. 平板Computer下的效应图:

在搜狗浏览器点【Tablet】,暗许IPad下的法力图:

语言 43

如图上边手提式有线电话机配备一样,能够切换设备。那样四个完好的webpart就活动创制好了。

1. 行使Visual Studio Code查看源码

那里运用Visual
studio
Code查看源码,因为这一个轻量级的工具,能够跨平台运维,能够在Mac和Linux下张开,当然有能够选择Visual
Studio的正经版本。

在Node.js命令行运转命令:code .(未完待续

1. 利用Visual Studio 20一伍怎么创立三个webPart

未完待续

1. 哪些修改代码扩张webPart属性

未完待续

1. 怎么安排到标准的SharePoint环境中

未完待续

1. 何以创制一个SharePoint列表

未完待续

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图