-
sqlserver存储过程中SELECT与SET对变量赋值的区别
SQLServer推荐使用SET而不是SELECT对变量进行赋值。当表达式返回一个值并对一个变量进行赋值时,推荐使用SET方法...
数据库操作教程 2022-09-23 20:41:01 -
SQLSERVER对加密的存储过程、视图、触发器进行解密(推荐)
加密测试的存储过程IFEXISTS(SELECT1FROMSYSOBJECTSWHERETYPE='P'ANDNAME='P_TEST')DROPPROCEDUREP_TESTGOCREATEPROCEDUREP_TEST(@USERNAMEVARCHAR(20),@MSGVARCHAR(20)OUTPUT)WITHENCRYPTIONASBEGINIF(SELECTCOUNT(1)FROMCustsWHERENAME=@USERNAME)>0SET@MSG='此用户名存在'ELSESET@MSG='此用户名不存在'END解密的存储过程CreatePROCEDUREDecryption(@proceduresysname=NULL)ASSETNOCOUNTONDECLARE@intProcSpacebigint,@tbigint,@maxColIDsmallint,@procNameLengthintselect@maxColID=max(subobjid)FROMsys.sysobjvaluesWHEREobjid=object_id(@procedure)--select@m...
数据库操作教程 2022-09-23 20:40:33 -
SQLServer的通用分页存储过程未使用游标,速度更快!
正常情况下,SQLServer服务器上会对使用频率大的Table建立合适的索引这样能大幅度的提高数据库本身的数据检索速度,建立索引的方法就不细说了如果需要返回大量数据,从几百行到几万行,甚至几十万行数据这时会发现响应速度越来越慢,甚至发生响应超时的错误为了解决这种大数据量请求的问题,就不得不使用分页模式了在这方面,JDBC就强悍得多,它可以将指定的行数和SQL请求一并发送给SQLServer,这样只返回分页后的数据,JDBC的原理还不清楚,但在实际使用中,速度还是非常快的如果没办法使用JDBC,最常用的方法就是存储过程了!我在写这个分页存储之前,参考了网上的大量相关文章,可以通过关键字:SQLServer分页进行搜索他们主要都是利用SQL中的Top方法,并且对所检索的数据结构要求有标识列,如果没有标识列,或者是联合主键,那么就会非常麻烦了。而且对应用里原有的SQL检索部分需要修改的地方较多,工作量较大...
数据库操作教程 2022-09-23 20:39:35 -
一个基于ROW_NUMBER()的通用分页存储过程代码
建立好如下的存储过程,以后要分页,直接调用改存储过程就可以了。注意:数据量大、性能要求高的,请个性化处理...
数据库操作教程 2022-09-23 20:39:19 -
sqlserver千万数量级分页存储过程代码
复制代码代码如下:setANSI_NULLSONsetQUOTED_IDENTIFIERONgoCreatePROCEDURE[dbo].[SP_Pagination]/**//******************************************************************千万数量级分页存储过程*****************************************************************参数说明:1...
数据库操作教程 2022-09-23 20:38:46 -
sqlserver另类非递归的无限级分类(存储过程版)
下面是我统计的几种方案:第一种方案(递归式):简单的表结构为:CategoryIDint(4),CategoryNamenvarchar(50),ParentIDint(4),Depthint(4)这样根据ParentID一级级的运用递归找他的上级目录。还有可以为了方便添加CategoryLeft,CategoryRight保存他的上级目录或下级目录第二种方案:设置一个varchar类型的CategoryPath字段来保存目录的完整路径,将父目录id用符号分隔开来...
数据库操作教程 2022-09-23 20:38:41 -
SQLSERVERPagerstoreprocedure分页存储过程
复制代码代码如下:SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATEPROCEDURE[dbo].[Pagination]@Pageint=1,--当前页码@PageSizeint=10,--每页记录条数(页面大小)@Tablenvarchar(500),--表名或视图名,甚至可以是嵌套SQL:(Select*FromTabWhereID>1000)Tab@Fieldnvarchar(800)='*',--返回记录集字段名,","隔开,默认是"*"@OrderBynvarchar(100)='IDASC',--排序规则@Filternvarchar(500),--过滤条件@MaxPagesmallintoutput,--执行结果-1error,0false,maxpagetrue@TotalRowintoutput,--记录总数/*2007-07-1222:11:00update*/@Descriptvarchar(100)output--结果描述ASBEGIN--====================================...
数据库操作教程 2022-09-23 20:38:28 -
sqlserver批量删除存储过程和批量修改存储过程的语句
修改:复制代码代码如下:declareproccurcursorforselect[name]fromsysobjectswherenamelike'Foods_%'declare@procnamevarchar(100)declare@tempvarchar(100)openproccurfetchnextfromproccurinto@procnamewhile(@@FETCH_STATUS=0)beginset@temp='kcb_'+@procnameEXECSP_RENAME@procname,@tempprint(@procname+'已被删除')fetchnextfromproccurinto@procnameendcloseproccurdeallocateproccurdeclareproccurcursorforselect[name]fromsysobjectswherenamelike'kcb%'declare@procnamevarchar(100)declare@tempvarchar(100)declare@temp2varchar(100)declare...
数据库操作教程 2022-09-23 20:38:24 -
sqlserver存储过程分页代码第1/2页
复制代码代码如下:declare@TotalCountintdeclare@TotalPageCountintexecP_viewPage_A'type1','*','id','','idasc',1,0,4,3,@TotalCountoutput,@TotalPageCountoutputselect*fromtype1CreatePROCP_viewPage_A/*nzperfect[no_mIss]高效通用分页存储过程(双向检索)2007.5...
数据库操作教程 2022-09-23 20:37:43 -
几个扩展存储过程使用方法
SQLServer中包含了几个可以访问系统注册表的扩展存储过程.但实际上这几个扩展存储过程是未公开的,从sqlserver7.0就有了,在SQLserver2000中仍然保留,他们以后可能会删除.但是这几个存储过程却提供了在当前的SQLServer版本中访问系统注册表的能力,而且很多人利用SQLServer来进行攻击系统时,往往都会用到这几个扩展存储过程.所以最好在SQLServer中禁用他们.xp_regenumvalues以多个记录集方式返回所有键值使用方法:xp_regenumvalues注册表根键,子键比如说,想看看HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun的所有键值:usemasterexecxp_regenumvalues'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftWindowsCurrentVersionRun'execxp_regenumvalues'HKEY_LOCAL_MACHINE','SYSTEMRAdminv2.0ServerParameters'xp...
数据库操作教程 2022-09-23 20:35:02 -
mssql存储过程表名和字段名为变量的实现方法
没有使用动态语句直接报错错误的复制代码代码如下:alterproctestpapersasbegindeclare@temsnvarchar(max),@zidaunnvarchar(max)set@tems=select*from@temsorderby@zidaunexec(@tems)endexectestpapers消息156,级别15,状态1,过程testpapers,第1行关键字'select'附近有语法错误。消息1087,级别15,状态2,过程testpapers,第1行必须声明表变量"@tems"...
数据库操作教程 2022-09-23 20:33:48 -
根据表名和索引获取需要的列名的存储过程
复制代码代码如下:createprocp_sword_getblcolumn(@tblNamevarchar(200),@fromIndexint,@toIndexint,@columnNamevarchar(3000)output)asbegindeclare@tempColumnvarchar(3000)declare@errMsgvarchar(200)declare@iintset@i=1set@columnName=''set@errMsg=''declaretempColumnCurcursorforselectsyscolumns.namefromsyscolumnsjoinsysobjectsonsyscolumns.id=sysobjects.idwheresysobjects.name=@tblNameorderbysyscolumns.colorderopentempColumnCurfetchnextfromtempColumnCurinto@tempColumnwhile@@FETCH_STATUS=0beginif(@fromIndex=0and@toInd...
数据库操作教程 2022-09-23 20:33:40