问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-04-08 10:10

我来回答

3个回答

热心网友 时间:2022-04-08 11:40

先视图可以将不同表中的数据通过关联实现多表数据输出,比如说,有一个类型表 uType,有字段tId,tName,有个产品表 uProct,有字段pId,pName,tId,此时你可以通过建立一张视图vProct将产品表和产品类型一起输出
SELECT p.pId AS 产品编号,p.pName AS 产品名称,t.tId AS 产品类型编号,t.tId AS 产品类型编号
FROM uProct AS p INNER JOIN uType AS t ON p.tId = t.tId;

这样就可以在程序里使用
SELECT * FROM vProct 来做产品资料的查询了
它可以减少我们编码的工作量,也方便维护。

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

怎么样,是不是也很简单呢,不过存储过程的用处不仅仅只有这些,他还有更强大的功能,比如使用游标、临时表来从多个表,甚至是多个数据库中调用数据,然后返回给用户,这些你可以在使用过程中慢慢的去发掘。

热心网友 时间:2022-04-08 12:58

人家问的是 create procere 与 create proc 两种写法有什么区别,贴那么长的技术文档有何用?

热心网友 时间:2022-04-08 14:32

proc,procere在创建存储过程时没有什么区别,也就是说一个是缩写,一个是全称
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
邪灯是什么意思? 趣头条怎么解绑微信 趣头条APP解绑微信教程 趣头条怎么解绑微信号 趣头条怎样解除微信绑定 魔兽世界7.0古龙之陨怎么做 咸阳男子欲带孩子轻生被救回,成年人的生活有多不易? 陕西咸阳,一男子欲带孩子轻生被救回,轻生带孩子是什么操作? 我是帅哥,为什么还没有人追? 为什么我这么漂亮就是没有一个男人来追我 气死了? 人不在本地,怎么实名制 字谜:泥,猜一个字 2012年有13个月那么节气怎么走,就是说大寒的时候其实大寒已经过去一个月么,大寒已经开始暖和了? 疯狂猜成语一只一个泥字还有水滴 山中无甲子什么意思? 泥打一字是什么 雨林木风如何用U盘重装win7 64位旗舰版 大寒已过,春天还会远吗 如何用雨林木风u盘制作工具安装win7 森林之中算老二,外表似猫天下知打一生肖 如何用u盘安装系统,雨林木风win7旗舰版 大寒已过腊来时 万物那逃出入机 什么意思 一字记之日:砌字猜什么生肖 雨林木风win7系统怎么用u盘安装 大寒的古诗和俗句 如何用u盘装雨林木风win7系统 三脚猫,功夫低。重心不稳也逞威。一仆碌,好失礼。心比天高满身泥是什么意思?指的是什么生肖? 怎样用u盘安装雨林木风win7系统 “山中无甲子,寒尽不知年”是什么意思? (沉泥画龙)猜生肖?猜字谜?麻烦解答一下谢谢! 雨林木风ghost win7怎么用U盘安装 泥字旁边一盏灯是什么成语 576关一个泥土的泥字还有一个蜡烛亮着这是什么成语? 一个泥字一滩水打一成语的答案 第一个字是泥字的成语 “一,二,三,四,五,六,七,八,九,零”这十个数字都有什么含义拜托了各位 谢谢 煎烤肠冻了能行吗? 幸运数字为3,6幸运色各代表什么颜色 电商们对2014年情人节都有哪些活动 黑色情人节活动方案,关于黑色情人节的活动 形容秋雨的诗有哪些? 中国爱乐乐团第一小提琴...坐第一排第三个(靠观众席那一排)的那个小提琴手叫什么名字? 中国爱乐乐团长笛首席还是不是倪一珍了呀 与秋雨有关的诗词至少两句 郭铮的广州星海音乐学院长号副教授 我国有哪些著名的交响乐团? 有关于秋雨的诗句有哪些? 中国爱乐乐团一位小提琴手的名字 描写秋雨的诗句有哪些 中国爱乐乐团的乐团名录 形容秋雨的诗句优美