sqlprocedure(在sqlserver中,存储过程proc,procedure什么区别)

2024-07-16 03:52:40 72

sqlprocedure(在sqlserver中,存储过程proc,procedure什么区别)

本文目录

在sqlserver中,存储过程proc,procedure什么区别

先视图可以将不同表中的数据通过关联实现多表数据输出,比如说,有一个类型表 uType,有字段tId,tName,有个产品表 uProduct,有字段pId,pName,tId,此时你可以通过建立一张视图vProduct将产品表和产品类型一起输出
SELECT p.pId AS 产品编号,p.pName AS 产品名称,t.tId AS 产品类型编号,t.tId AS 产品类型编号
FROM uProduct AS p INNER JOIN uType AS t ON p.tId = t.tId;
这样就可以在程序里使用
SELECT * FROM vProduct 来做产品资料的查询了
它可以减少我们编码的工作量,也方便维护。
SQL SERVER数据库开发之存储过程应用

可能有不少朋友使用SQL SERVER做开发也已经有段日子,但还没有或者很少在项目中使用存储过程,或许有些朋友认为根本没有必要使用存储过程等等。其实当你一个项目做完到了维护阶段时,就会发现存储过程给我们带来了好处了,修改方便,不能去改我们的应用程序,只需要改存储过程的内容,而且还可以使我们的程序速度得到提高。
要使用存储过程,首先我们必需熟悉一些基本的T-SQL语句,因为存储过程是由于一组T-SQL语句构成的,并且,我们需要了解一些关于函数、过程的概念,因为我们需要在应用程序中调用存储过程,就像我们调用应用程序的函数一样,不过调用的方法有些不同。
下面我们来看一下存储过程的建立和使用方法。
一、创建存储过程
和数据表一样,在使用之前我们需要创建存储过程,它的简明语法是:
QUOTE:
CREATE PROC 存储过程名称
[参数列表(多个以“,”分隔)]
AS
SQL 语句
例:
QUOTE:
CREATE PROC upGetUserName
@intUserId INT,
@ostrUserName NVARCHAR(20) OUTPUT -- 要输出的参数
AS
BEGIN
-- 将uName的值赋给 @ostrUserName 变量,即要输出的参数
SELECT @ostrUserName=uName FROM uUser WHERE uId=@intUserId
END
其中 CREATE PROC 语句(完整语句为CREATE PROCEDURE)的意思就是告诉SQL SERVER,现在需要建立一个存储过程,upGetUserName 就是存储过程名称,@intUserId 和 @ostrUserName 分别是该存储过程的两个参数,注意,在SQL SERVER中,所有用户定义的变量都以“@”开头,OUTPUT关键字表示这个参数是用来输出的,AS之后就是存储过程内容了。只要将以上代码在“查询分析器”里执行一次,SQL SERVER就会在当前数据库中创建一个名为“upGetUserName”的存储过程。你可以打开“企业管理器”,选择当前操作的数据库,然后在左边的树型列表中选择“存储过程”,此时就可以在右边的列表中看到你刚刚创建的存储过程了(如果没有,刷新一下即可)。
二、存储过程的调用
之前我们已经创建了一个名为“upGetUserName”的存储过程,从字面理解该存储过程的功能是用来取得某一个用户的名称。存储过程建立好了,接下来就是要在应用程序里调用了,下面看一下在ASP程序里的调用。
QUOTE:
Dim adoComm
’// 创建一个对象,我们用来调用存储过程
Set adoComm = CreateObject(“ADODB.Command“)
With adoComm
’// 设置连接,设 adoConn 为已经连接的 ADODB.Connection 对象
.ActiveConnection = adoConn
’// 类型为存储过程,adCmdStoredProc = 4
.CommandType = 4
’// 存储过程名称
.CommandText = “upGetUserName“
’// 设置用户编号
.Parameters.Item(“@intUserId“).Value = 1
’// 执行存储过程
.Execute

’// 取得从存储过程返回的用户名称
Response.Write “用户名:“ & .Parameters.Item(“@ostrUserName“).Value
End With
’// 释放对象
Set adoComm = Nothing
通过以上两步,我们已经可以创建和使用简单的存储过程了。下面我们来看一个稍微复杂点的存储过程,以进一步了解存储过程的应用。
三、存储过程的实际应用
用户登录在ASP项目中经常会使用到,相信很多朋友也都做过类似的系统,但使用存储过程来做验证朋友可能不多,那么我们就以它来做例子,写一个简单的用户登录验证的存储过程。
QUOTE:
CREATE PROC upUserLogin
@strLoginName NVARCHAR(20),
@strLoginPwd NVARCHAR(20),
@blnReturn BIT OUTPUT
AS
-- 定义一个临时用来保存密码的变量
DECLARE @strPwd NVARCHAR(20)
BEGIN
-- 从表中查询当前用户的密码,赋值给 @strPwd 变量,下面要对他进行比较
SELECT @strPwd=uLoginPwd FROM uUser WHERE uLoginName=@strLoginName
IF @strLoginPwd = @strPwd
BEGIN
SET @blnReturn = 1
-- 更新用户最后登录时间
UPDATE uUser SET uLastLogin=GETDATE() WHERE uLoginName=@strLoginName
END
ELSE
SET @blnReturn = 0
END
用户登录的存储过程建立好了,现在在程序里试一下吧。注意,在一个区域内如果有多条语句时,必需使用BEGIN...END关键字。
QUOTE:
Dim adoComm
’// 创建一个对象,我们用来调用存储过程
Set adoComm = CreateObject(“ADODB.Command“)
With adoComm
’// 设置连接,设 adoConn 为已经连接的 ADODB.Connection 对象
.ActiveConnection = adoConn
’// 类型为存储过程,adCmdStoredProc = 4
.CommandType = 4
’// 存储过程名称
.CommandText = “upUserLogin“
’// 设置登录名称
.Parameters.Item(“@strLoginName“).Value = “admin“
’// 设置登录密码
.Parameters.Item(“@strLoginPwd“).Value = “123456“
’// 执行存储过程
.Execute

’// 判断是否登录成功
If .Parameters.Item(“@blnReturn“).Value = 1 Then
Response.Write “恭喜你,登录成功!“
Else
Response.Write “不是吧,好像错了哦。。。“
End If
End With
’// 释放对象
Set adoComm = Nothing
通过以上的步骤,简单用户登录验证过程也做完了,现在只要把它整合到程序中就可以实现简单的用户登录验证了,关于其他细节就由你自己来处理了。
上面介绍的两个存储过程都是只返回一个值的,下面我们来看一个返回一个记录集的存储过程。
QUOTE:
CREATE PROC upGetUserInfos
@intUserGroup INT
AS
BEGIN
-- 从数据库中抽取符合条件的数据
SELECT uName,uGroup,uLastLogin FROM uUser WHERE uGroup=@intUserGroup
-- 插入一列合计
UNION
SELECT ’合计人数:’,COUNT(uGroup),NULL FROM uUser WHERE uGroup=@intUserGroup
END
现在我们来看一下ASP程序的调用。
QUOTE:
Dim adoComm
Dim adoRt
’// 创建一个对象,我们用来调用存储过程
Set adoComm = CreateObject(“ADODB.Command“)
Set adoRs = CreateObject(“ADODB.Recordset“)
With adoComm
’// 设置连接,设 adoConn 为已经连接的 ADODB.Connection 对象
.ActiveConnection = adoConn
’// 类型为存储过程,adCmdStoredProc = 4
.CommandType = 4
’// 存储过程名称
.CommandText = “upGetUserInfos“
’// 设置用户组
.Parameters.Item(“@intUserGroup“).Value = 1
’// 执行存储过程,和以上几个例子不同,这里使用RecordSet的Open方法
adoRs.Open adoComm
’// 显示第一个值
Response.write adoRs.Fields(0).Value
End With
’// 释放对象
Set adoRs = Nothing
Set adoComm = Nothing
怎么样,是不是也很简单呢,不过存储过程的用处不仅仅只有这些,他还有更强大的功能,比如使用游标、临时表来从多个表,甚至是多个数据库中调用数据,然后返回给用户,这些你可以在使用过程中慢慢的去发掘。

sql存储过程有啥用

Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。
Ø 存储过程的概念
存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。
存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。
由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、简单网络负担。

1、 存储过程的优点
A、 存储过程允许标准组件式编程
存储过程创建后可以在程序中被多次调用执行,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响,从而极大的提高了程序的可移植性。
B、 存储过程能够实现较快的执行速度
如果某一操作包含大量的T-SQL语句代码,分别被多次执行,那么存储过程要比批处理的执行速度快得多。因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划。而批处理的T-SQL语句每次运行都需要预编译和优化,所以速度就要慢一些。
C、 存储过程减轻网络流量
对于同一个针对数据库对象的操作,如果这一操作所涉及到的T-SQL语句被组织成一存储过程,那么当在客户机上调用该存储过程时,网络中传递的只是该调用语句,否则将会是多条SQL语句。从而减轻了网络流量,降低了网络负载。
D、 存储过程可被作为一种安全机制来充分利用
系统管理员可以对执行的某一个存储过程进行权限限制,从而能够实现对某些数据访问的限制,避免非授权用户对数据的访问,保证数据的安全。

Ø 系统存储过程
系统存储过程是系统创建的存储过程,目的在于能够方便的从系统表中查询信息或完成与更新数据库表相关的管理任务或其他的系统管理任务。系统存储过程主要存储在master数据库中,以“sp”下划线开头的存储过程。尽管这些系统存储过程在master数据库中,但我们在其他数据库还是可以调用系统存储过程。有一些系统存储过程会在创建新的数据库的时候被自动创建在当前数据库中。

sql procedure 怎么调用

为了演示方便,新创建了一个存储过程 [dbo].[pr_test] 。
怎么调用SQL存储过程
存储过程内容很简单就是几个数字,实际应用中可能还会使用的到一些存储过程参数。
怎么调用SQL存储过程
执行存储过程,来检验一下新建的存储过程结果集。
怎么调用SQL存储过程
若我们在其实场景需要调用这个存储过程中的结果集,则不需要直接调用,而是将结果集先插入一个临时表即可。
create table #data (
Ftest1 int,
Ftest2 int,
Ftest3 int
)
注意:表定义的列数目要与存储过程的一致。
怎么调用SQL存储过程
临时表创建好了之后,使用insert into #data exec [dbo].[pr_test] 将结果集插入到临时表#data中。
怎么调用SQL存储过程
可以将以上的创建临时表和插入存储过程结果的SQL语句放在需要的调用存储过程的场景中。
怎么调用SQL存储过程
这样就可以通过临时表#data来连接其他表了。

sqlprocedure(在sqlserver中,存储过程proc,procedure什么区别)

本文编辑:admin
: sqlprocedure,

更多文章:


java matcher类(java 正则表达式中matcher类起什么作用)

java matcher类(java 正则表达式中matcher类起什么作用)

本文目录java 正则表达式中matcher类起什么作用Java中正则Matcher类的matches,lookAt和find的区别java中Matcher类java matcher方法java中matches的作用java 正则表达式中m

2024年7月23日 15:18

nominal scale(统计学中的 DATA:Nominal,Ordinal, Interval and Ratio怎么区别)

nominal scale(统计学中的 DATA:Nominal,Ordinal, Interval and Ratio怎么区别)

本文目录统计学中的 DATA:Nominal,Ordinal, Interval and Ratio怎么区别nominal scale是什么意思统计学中的 DATA:Nominal,Ordinal, Interval and Ratio怎么

2024年5月4日 12:44

文档管理系统 免费(哪个平台可以做文档管理系统)

文档管理系统 免费(哪个平台可以做文档管理系统)

本文目录哪个平台可以做文档管理系统有没有好用又免费的档案管理软件推荐一下文档管理系统哪个比较好有没有什么适用于一个部门局域网内的文档管理系统免费软件推荐呢哪个平台可以做文档管理系统为何工作中总是找不到所需文档和知识?泛微有妙招泛微知识管理解

2023年8月28日 15:20

网站设计需要什么技术(建网站需要掌握哪些技术)

网站设计需要什么技术(建网站需要掌握哪些技术)

这篇文章给大家聊聊关于网站设计需要什么技术,以及建网站需要掌握哪些技术对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录建网站需要掌握哪些技术网站建设都需要有哪些技术网站建设,需要掌握的技术有哪些建立一个网站需要掌握那些技术网站

2024年8月12日 18:15

php怎么下载apcher(用php实现ppt文件下载)

php怎么下载apcher(用php实现ppt文件下载)

这篇文章给大家聊聊关于php怎么下载apcher,以及用php实现ppt文件下载对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录用php实现ppt文件下载如何使用php文件进行bt下载在php中怎样加入下载我下载了php之后

2024年7月13日 11:00

ajax编程带来的新的攻击变化(什么是Ajax它的优点是怎样的)

ajax编程带来的新的攻击变化(什么是Ajax它的优点是怎样的)

本文目录什么是Ajax它的优点是怎样的ajax原理是什么AJAX是什么Ajax的优缺点Ajax有什么用什么时候使用AjaxAJAX技术有哪些方面的优势AJAX的主要用途是什么ajax的开发模式AJAX框架干嘛的什么是Ajax它的优点是怎样的

2024年5月13日 02:05

韩国明星死亡大全排行榜(2021年去世的八位明星)?孙侨潞是单亲家庭吗

韩国明星死亡大全排行榜(2021年去世的八位明星)?孙侨潞是单亲家庭吗

本文目录韩国明星死亡大全排行榜(2021年去世的八位明星)孙侨潞是单亲家庭吗韩国明星死亡大全排行榜(2021年去世的八位明星)18年去世的韩国女明星有宋侑庭,崔雪莉,具荷拉,童星孙侨潞是在跨年夜去世的。第一位:赵英俊第二位:吴孟达第三位:孙

2024年3月16日 23:55

wps表格文本框的边框怎么去掉(wps文本框的边框怎么去掉)

wps表格文本框的边框怎么去掉(wps文本框的边框怎么去掉)

本文目录wps文本框的边框怎么去掉wps文本框怎么去掉边框只保留文字wps文字边框怎么去掉wps文字如何去除文本框的框线怎样去掉WPS文档的文本框 只要文字 打印是不显示文本框就行如何去掉WPS文档中文本框的线条wps文档有个边框 怎么能去

2024年6月30日 05:09

proposition是什么意思(proposition是什么意思 《法语助手》法汉)

proposition是什么意思(proposition是什么意思 《法语助手》法汉)

本文目录proposition是什么意思 《法语助手》法汉proposition翻译英语中,proposition proposal suggestion三词意思有何不同proposition是什么意思business propositio

2024年7月19日 08:50

matlab编程心得体会(数学建模实验报告范文 数学建模的实验报告)

matlab编程心得体会(数学建模实验报告范文 数学建模的实验报告)

本文目录数学建模实验报告范文 数学建模的实验报告机械课程设计心得MATLAB实验报告分析总结matlab 在概率统计中或线性代数中的学习心得Matlab 句柄相关概念总结Matlab相机标定总结MATLAB实习总结实验心得体会4篇matla

2024年7月8日 08:15

languages翻译(英语翻译 是What languages还是Which languages)

languages翻译(英语翻译 是What languages还是Which languages)

“languages翻译”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看languages翻译(英语翻译 是What languages还是Which languages)!本文目录英语翻译 是What languages还

2024年7月20日 16:01

forward to(look forward to 什么意思什么用法)

forward to(look forward to 什么意思什么用法)

本文目录look forward to 什么意思什么用法forward to do还是doinglook forward to后面什么时候跟to do,什么时候用doinglook forward to的两种用法是什么forward to

2024年7月17日 16:24

余三码转换器(怎样用一片4线-16线的译码器将8421BCD码转为余三码)

余三码转换器(怎样用一片4线-16线的译码器将8421BCD码转为余三码)

本文目录怎样用一片4线-16线的译码器将8421BCD码转为余三码余三码是什么什么是余3码有什么重要应用请问8421BCD码和余3码怎么转换余3循环BCD码如何转换成十进制!!8421码转换成余三码可以用什么电路用3线-8线译码器74138

2024年7月14日 23:52

获取当前时间java(如何在java程序中获取java.sql.Date类型的当前系统时间)

获取当前时间java(如何在java程序中获取java.sql.Date类型的当前系统时间)

本文目录如何在java程序中获取java.sql.Date类型的当前系统时间java怎么获取当前时间java程序:获取当前的系统时间【Java】怎样获取当前系统时间,需要的格式为yyyy-MM-dd HH:mm:ss请问:怎么用java语言

2024年7月14日 11:37

decorations是什么意思(请问decoration是什麼意思)

decorations是什么意思(请问decoration是什麼意思)

本文目录请问decoration是什麼意思雅思口语decoration是什么意思decoration什么意思中文decoration是什么意思decorate是什么意思decorations是什么意思请问decoration是什麼意思名词

2024年7月17日 23:57

游戏开发大亨(如果你想开发一款游戏你会选哪种主题为什么)

游戏开发大亨(如果你想开发一款游戏你会选哪种主题为什么)

本文目录如果你想开发一款游戏你会选哪种主题为什么有什么耐玩的单机pc游戏,沙盘类,比如海岛大亨,模拟城市有没有和《大富豪3》差不多经商手游值得推荐一下如果你想开发一款游戏你会选哪种主题为什么其实这个有很多的分布类型,根据你对游戏的想象看法和

2024年7月9日 04:41

纯ipv6网站测试(IPv6来了,网络该如何部署演进)

纯ipv6网站测试(IPv6来了,网络该如何部署演进)

本文目录IPv6来了,网络该如何部署演进IPV6环境下还需不需要NATIPv6来了,网络该如何部署演进Pv6建设大潮将至随着5G、物联网、智慧城市、SDN/NFV、云计算以及边缘计算等新兴技术的蓬勃发展,互联网产业对IPv6的需求也日益迫切

2024年7月22日 00:47

display none block(JQ控制CSS中的display:none,block怎么改)

display none block(JQ控制CSS中的display:none,block怎么改)

大家好,如果您还对display none block不太了解,没有关系,今天就由本站为大家分享display none block的知识,包括JQ控制CSS中的display:none,block怎么改的问题都会给大家分析到,还望可以解决

2024年9月8日 03:10

excel的函数公式求个数(excel求单元格个数的函数是什么)

excel的函数公式求个数(excel求单元格个数的函数是什么)

大家好,今天小编来为大家解答以下的问题,关于excel的函数公式求个数,excel求单元格个数的函数是什么这个很多人还不知道,现在让我们一起来看看吧!本文目录excel求单元格个数的函数是什么excel表中统计个数公式有哪些excel中统计

2024年8月24日 17:20

return怎么读音(回的英文怎么读)

return怎么读音(回的英文怎么读)

本文目录回的英文怎么读return; shorts;shirt; join 这英语用谐音怎么读回的英文怎么读return 英 第三人称单数:returns 复数:returns 现在分词:returning 过去式:return

2024年7月18日 04:59

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1730
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1155
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索