志在指尖
用双手敲打未来

sql 存储过程(实例及调试过程)

sql存储过程

实例1:只回来单一记录集的存储进程。
银行存款表(bankMoney)的内容如下
Id
userID
Sex
Money
001
Zhangsan

30
002
Wangwu

50
003
Zhangsan

40
要求1:查询表bankMoney的内容的存储进程
createproceduresp_query_bankMoney
as
select*frombankMoney
go
execsp_query_bankMoney
注*在运用进程中只需要把中的SQL句子替换为存储进程名,就能够了很方便吧!
实例2(向存储进程中传递参数):
参加一笔记录到表bankMoney,并查询此表中userID=Zhangsan的一切存款的总金额。
Createprocinsert_bank@param1char(10),@param2varchar(20),@param3varchar(20),@param4int,@param5intoutput
withencryption———加密
as
insertbankMoney(id,userID,sex,Money)
Values(@param1,@param2,@param3,@param4)
select@param5=sum(Money)frombankMoneywhereuserID=’Zhangsan’
go
在SQLServer查询分析器中履行该存储进程的方法是:
declare@total_priceint
execinsert_bank’004′,’Zhangsan’,’男’,100,@total_priceoutput
print’总余额为’+convert(varchar,@total_price)
go
在这里再烦琐一下存储进程的3种传回值(方便正在看这个例子的朋友不用再去检查语法内容):
1.以Return传回整数
2.以output格局传回参数
3.Recordset
传回值的区别:
output和return都可在批次程式中用变量接纳,而recordset则传回到履行批次的客户端中。
实例3:运用带有复杂SELECT句子的简略进程
下面的存储进程从四个表的联接中回来一切作者(供给了姓名)、出书的书籍以及出书社。该存储进程不运用任何参数。
USEpubs
IFEXISTS(SELECTnameFROMsysobjects
WHEREname=’au_info_all’ANDtype=’P’)
DROPPROCEDUREau_info_all
GO
CREATEPROCEDUREau_info_all
AS
SELECTau_lname,au_fname,title,pub_name
FROMauthorsaINNERJOINtitleauthorta
ONa.au_id=ta.au_idINNERJOINtitlest
ONt.title_id=ta.title_idINNERJOINpublishersp
ONt.pub_id=p.pub_id
GO
au_info_all存储进程能够通过以下方法履行:
EXECUTEau_info_all
实例4:运用带有参数的简略进程
CREATEPROCEDUREau_info
@lastnamevarchar(40),
@firstnamevarchar(20)
AS
SELECTau_lname,au_fname,title,pub_name
FROMauthorsaINNERJOINtitleauthorta
ONa.au_id=ta.au_idINNERJOINtitlest
ONt.title_id=ta.title_idINNERJOINpublishersp
ONt.pub_id=p.pub_id
WHEREau_fname=@firstname
ANDau_lname=@lastname
GO
au_info存储进程能够通过以下方法履行:
EXECUTEau_info’Dull’,’Ann’
–Or
EXECUTEau_info@lastname=’Dull’,@firstname=’Ann’
–Or
EXECUTEau_info@firstname=’Ann’,@lastname=’Dull’
实例5:运用带有通配符参数的简略进程
CREATEPROCEDUREau_info2
@lastnamevarchar(30)=’D%’,
@firstnamevarchar(18)=’%’
AS
SELECTau_lname,au_fname,title,pub_name
FROMauthorsaINNERJOINtitleauthorta
ONa.au_id=ta.au_idINNERJOINtitlest
ONt.title_id=ta.title_idINNERJOINpublishersp
ONt.pub_id=p.pub_id
WHEREau_fnameLIKE@firstname
ANDau_lnameLIKE@lastname
GO
au_info2存储进程能够用多种组合履行。下面只列出了部分组合:
EXECUTEau_info2
–Or
EXECUTEau_info2’Wh%’
–Or
EXECUTEau_info2@firstname=’A%’
–Or
EXECUTEau_info2′[CK]ars[OE]n’
–Or
EXECUTEau_info2’Hunter’,’Sheryl’
–Or
EXECUTEau_info2’H%’,’S%’

sql实例及调试过程

调试SQLServer的存储进程及用户界说函数
1、在查询分析器中调试
查询分析器中调试的步骤如下:
SQL2000查询分析器
–左连的目标浏览器(没有的话按F8)
–目标项中
–右键调试的存储进程
–调试
–输入参数(有必要输入所有的参数,包括默认值/输出参数
–点击履行
–出现一个浮动工具条
–上面有单步履行,断点设置等
按F11是单步履行.
假如要运转到指定行,只需要将光标移动到指定的行,再按Ctrl+F10
2、经过输出存储进程或用户界说函数的处理成果进行调试
假如没办法运用查询分析器调试存储进程,能够直接在存储进程中增加PRINT或许SELECT句子,输出存储进程各步骤的履行成果。对于用户界说函数,不能运用PRINT或许SELECT句子输出各步骤的履行成果,要调度用户界说函数,能够将用户界说函数改成存储进程,调试成功后再改回用户界说函数。
3、在VB.NET中调试
菜单中,挑选”工具”–“连接到数据库”
挑选”视图”–“服务器资源管理器”
在服务器资源管理器中,右键要调试的存储进程或许用户界说函数–单步履行.
4、保障查询分析器或许VB.NET中能成功调试的几个事项
1.长途sql服务器的mssqlserver服务要求运用指定用户(不是本地体系用户),最好是administrator启动。
控制面板–管理工具–服务–右键mssqlserver–属性–登录中,将登录身份改为“此帐户”,并设置对应的用户名及暗码。
2.登录长途sql的用户运用sa
3.长途sql服务器要求未禁用调试功用,履行下面的句子敞开调试功用:
sp_sdidebuglegacy_on
4.确保调试与被调试的电脑的sqlserver版别共同,无论是客户端,还是服务器,最好都装置sqlsp4。
查看SQServerL有没有打补丁的办法是在查询分析器中运转:
select@@version
假如出来的版别号是8.00.2039以下,则标明未装置sp4的补丁。
全部补丁的位置(在下载页的中间部分,能够挑选言语,有必要确保下载的补丁言语和sqlserver实例言语对应)
简体中文版式SQLServer2000应该装置的补丁
留意:
a.补丁下载后,履行的时候是解压,要在解压后的目录中履行setup.bat才是真正的装置
b.假如的操作体系是xp,那么在装置xpsp2后,不管曾经是否装置过sqlsp4,都要再装置一次,并且在防火墙中敞开1433端口,不然无法被其他电脑拜访。
c.windows2003上运转机制的SQLServer有必要装置sp3或许更高的补丁版别。

未经允许不得转载:IT技术网站 » sql 存储过程(实例及调试过程)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载