数据库中的存储过程怎么用 啊!!求解.....

数据库中的存储过程怎么用 啊!!求解.....,第1张

存储过程分为四类系统存储过程、用户定义存储过程、临时存储过程(以“#”或“##”为前缀)、扩展存储过程。

常用的系统存储过程的使用:

(1)sp_helpdb

用于查看数据库名称和大小。

(2)sp_helptext

用于显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本。

(3)sp_renamedb

用于重命名数据库。

(4)sp_rename

用于更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。

(5)sp_helplogins

查看所有数据库用户登录信息。

(6)sp_helpsrvrolemember

用于以查看所有数据库用户所属的角色信息。

就列这些常用的了,其他你自己慢慢找资料看看。

我在别人的blog上摘录的,你可以上去看看,能学到很多知识了

http://www.badguy.name/article.asp?id=702

上一篇 下一篇连接,能看到很多sql文章。

希望对你有帮助。

1.数据定义语言(DDL)

数据定义语言是指用来定义和管理数据库以及数据库中的各种对象的语句,这些语句包括Create、Alter和Drop等语句。在SQL Server 2000中,数据库对象包括表、视图、触发器、存储过程、规则、缺省、用户自定义的数据类型等。这些对象的创建、修改和删除等都可以通过使用Create、Alter、Drop等语句来完成。

2.数据 *** 纵语言(DML)

数据 *** 纵语言是指用来查询、添加、修改和删除数据库中数据的语句,这些语句包括Select、Insert、Update、Delete等。在默认情况下,只有sysadmin、dbcreator、db_owner或db_datawriter等角色的成员才有权利执行数据 *** 纵语言。

3.数据控制语言(DCL)

数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、DENY、REVOKE等语句,在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言。

GRANT语句是授权语句,它可以把语句权限或者对象权限授予给其他用户和角色。

DENY语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。

REVOKE语句是与GRANT语句相反的语句,它能够将以前在当前数据库内的用户或者角色上授予或拒绝的权限删除,但是该语句并不影响用户或者角色从其他角色中作为成员继承过来的权限。

----------------------------------------------

4. 系统存储过程

系统存储过程是SQL Server系统创建的存储过程,它的目的在于能够方便地从系统表中查询信息,或者完成与更新数据库表相关的管理任务或其它的系统管理任务。系统存储过程可以在任意一个数据库中执行。系统存储过程创建并存放于系统数据库master中,并且名称以sp_或者xp_开头。

sp_addtype:用于定义一个用户定义数据类型。

sp_configure:用于管理服务器配置选项设置。

xp_sendmail:用于发送电子邮件或寻呼信息。

sp_stored_procedures:用于返回当前数据库中的存储过程的清单。

sp_help:用于显示参数清单和其数据类型。

sp_depends:用于显示存储过程依据的对象或者依据存储过程的对象。

sp_helptext:用于显示存储过程的定义文本。

sp_rename:用于修改当前数据库中用户对象的名称

3.数据控制语言(DCL)

数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、DENY、REVOKE等语句,在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言。

GRANT语句是授权语句,它可以把语句权限或者对象权限授予给其他用户和角色。

DENY语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。

REVOKE语句是与GRANT语句相反的语句,它能够将以前在当前数据库内的用户或者角色上授予或拒绝的权限删除,但是该语句并不影响用户或者角色从其他角色中作为成员继承过来的权限。

----------------------------------------------

4. 系统存储过程

系统存储过程是SQL Server系统创建的存储过程,它的目的在于能够方便地从系统表中查询信息,或者完成与更新数据库表相关的管理任务或其它的系统管理任务。系统存储过程可以在任意一个数据库中执行。系统存储过程创建并存放于系统数据库master中,并且名称以sp_或者xp_开头。

sp_addtype:用于定义一个用户定义数据类型。

sp_configure:用于管理服务器配置选项设置。

xp_sendmail:用于发送电子邮件或寻呼信息。

sp_stored_procedures:用于返回当前数据库中的存储过程的清单。

sp_help:用于显示参数清单和其数据类型。

sp_depends:用于显示存储过程依据的对象或者依据存储过程的对象。

sp_helptext:用于显示存储过程的定义文本。

sp_rename:用于修改当前数据库中用户对象的名称。

程序代码

1. EXEC sp_renamedb 'userdb1', 'userdb2'

更改数据库的名称,由userdb1更改为userdb2

2.EXEC sp_rename 'user_log','用户登录表'

更改当前数据库表的名称,由user_log,改为'用户登录表'

EXEC sp_rename 'user_info.user_name', '用户名','column'

将user_info表的'user_name'列重命名为'用户名'

3.EXEC sp_detach_db 'pubs', 'true'

sp_detach_db

从服务器分离数据库,并可以选择在分离前在所有的表上运行 Update STATISTICS。

4. 将数据库附加到服务器

EXEC sp_attach_db @dbname = N'pubs',

@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',

@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'

5. 将只有一个数据文件的数据库附加到当前服务器

EXEC sp_attach_single_file_db @dbname = 'pubs',

@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'

----------------------------------------------

SQL中的注释

在SQL Server中,可以使用两种类型的注释字符:一种是ANSI标准的注释符“--”,它用于单行注释;另一种是与C语言相同的程序注释符号,即“/* */”。

SQL中的变量

Transact-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量。

3.数据控制语言(DCL)

数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、DENY、REVOKE等语句,在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言。

GRANT语句是授权语句,它可以把语句权限或者对象权限授予给其他用户和角色。

DENY语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。

REVOKE语句是与GRANT语句相反的语句,它能够将以前在当前数据库内的用户或者角色上授予或拒绝的权限删除,但是该语句并不影响用户或者角色从其他角色中作为成员继承过来的权限。

----------------------------------------------

4. 系统存储过程

系统存储过程是SQL Server系统创建的存储过程,它的目的在于能够方便地从系统表中查询信息,或者完成与更新数据库表相关的管理任务或其它的系统管理任务。系统存储过程可以在任意一个数据库中执行。系统存储过程创建并存放于系统数据库master中,并且名称以sp_或者xp_开头。

sp_addtype:用于定义一个用户定义数据类型。

sp_configure:用于管理服务器配置选项设置。

xp_sendmail:用于发送电子邮件或寻呼信息。

sp_stored_procedures:用于返回当前数据库中的存储过程的清单。

sp_help:用于显示参数清单和其数据类型。

sp_depends:用于显示存储过程依据的对象或者依据存储过程的对象。

sp_helptext:用于显示存储过程的定义文本。

sp_rename:用于修改当前数据库中用户对象的名称。

程序代码

1. EXEC sp_renamedb 'userdb1', 'userdb2'

更改数据库的名称,由userdb1更改为userdb2

2.EXEC sp_rename 'user_log','用户登录表'

更改当前数据库表的名称,由user_log,改为'用户登录表'

EXEC sp_rename 'user_info.user_name', '用户名','column'

将user_info表的'user_name'列重命名为'用户名'

3.EXEC sp_detach_db 'pubs', 'true'

sp_detach_db

从服务器分离数据库,并可以选择在分离前在所有的表上运行 Update STATISTICS。

4. 将数据库附加到服务器

EXEC sp_attach_db @dbname = N'pubs',

@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',

@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'

5. 将只有一个数据文件的数据库附加到当前服务器

EXEC sp_attach_single_file_db @dbname = 'pubs',

@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'

----------------------------------------------

SQL中的注释

在SQL Server中,可以使用两种类型的注释字符:一种是ANSI标准的注释符“--”,它用于单行注释;另一种是与C语言相同的程序注释符号,即“/* */”。

SQL中的变量

Transact-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量。

局部变量:局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。局部变量可以作为计数器来计算循环执行的次数,或是控制循环执行的次数。另外,利用局部变量还可以保存数据值,以供控制流语句测试以及保存由存储过程返回的数据值等。局部变量被引用时要在其名称前加上标志“@”,而且必须先用DECLARE命令定义后才可以使用。

全局变量:全局变量是SQL Server系统内部使用的变量,其作用范围并不仅仅局限于某一程序,而是任何程序均可以随时调用。全局变量通常存储一些SQL Server的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。

使用全局变量时应该注意以下几点:

①全局变量不是由用户的程序定义的,它们是在服务器级定义的。

②用户只能使用预先定义的全局变量。

③引用全局变量时,必须以标记符“@@”开头。

④局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。

----------------------------------------------

SQL中的函数

在Transact-SQL语言中,函数被用来执行一些特殊的运算以支持SQL Server的标准命令。Transact-SQL 编程语言提供了三种函数:

一行集函数:行集函数可以在Transact-SQL语句中当作表引用。

二聚合函数:聚合函数用于对一组值执行计算并返回一个单一的值。

三标量函数:标量函数用于对传递给它的一个或者多个参数值进行处理和计算,并返回一个单一的值。

1.字符串函数

字符串函数包括:

基本字符串函数:UPPER、LOWER、SPACE、REPLICATE、STUFF、REVERSE、LTRIM、RTRIM。

字符串查找函数:CHARINDEX、PATINDEX。

长度和分析函数:DATALENGTH、SUBSTRING、RIGHT。

转换函数:ASCH、CHAR、STR、SOUNDEX、DIFFERENCE。

基本字符串函数

UPPER:将小写字符数据转换为大写的字符

LOWER:将大写字符数据转换为小写的字符

SPACE:返回由重复的空格组成的字符串。如:space(2)则返回两个空格

REPLICATE:以指定的次数重复字符表达式。

语法:REPLICATE ( character_e­xpression , integer_e­xpression )

如:Select REPLICATE(au_fname, 2) FROM authors,则重复两遍每个作者的名字

STUFF:删除指定长度的字符并在指定的起始点插入另一组字符。

语法:STUFF ( character_e­xpression , start , length , character_e­xpression )

(start是一个整形值,指定删除和插入的开始位置。如果 start 或 length 是负数,则返回空字符串。如果 start 比第一个 character_e­xpression 长,则返回空字符串。

length是一个整数,指定要删除的字符数。如果 length 比第一个 character_e­xpression 长,则最多删除到最后一个 character_e­xpression 中的最后一个字符。)

3.数据控制语言(DCL)

数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、DENY、REVOKE等语句,在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言。

GRANT语句是授权语句,它可以把语句权限或者对象权限授予给其他用户和角色。

DENY语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。

REVOKE语句是与GRANT语句相反的语句,它能够将以前在当前数据库内的用户或者角色上授予或拒绝的权限删除,但是该语句并不影响用户或者角色从其他角色中作为成员继承过来的权限。

----------------------------------------------

4. 系统存储过程

系统存储过程是SQL Server系统创建的存储过程,它的目的在于能够方便地从系统表中查询信息,或者完成与更新数据库表相关的管理任务或其它的系统管理任务。系统存储过程可以在任意一个数据库中执行。系统存储过程创建并存放于系统数据库master中,并且名称以sp_或者xp_开头。

sp_addtype:用于定义一个用户定义数据类型。

sp_configure:用于管理服务器配置选项设置。

xp_sendmail:用于发送电子邮件或寻呼信息。

sp_stored_procedures:用于返回当前数据库中的存储过程的清单。

sp_help:用于显示参数清单和其数据类型。

sp_depends:用于显示存储过程依据的对象或者依据存储过程的对象。

sp_helptext:用于显示存储过程的定义文本。

sp_rename:用于修改当前数据库中用户对象的名称。

程序代码

1. EXEC sp_renamedb 'userdb1', 'userdb2'

更改数据库的名称,由userdb1更改为userdb2

2.EXEC sp_rename 'user_log','用户登录表'

更改当前数据库表的名称,由user_log,改为'用户登录表'

EXEC sp_rename 'user_info.user_name', '用户名','column'

将user_info表的'user_name'列重命名为'用户名'

3.EXEC sp_detach_db 'pubs', 'true'

sp_detach_db

从服务器分离数据库,并可以选择在分离前在所有的表上运行 Update STATISTICS。

4. 将数据库附加到服务器

EXEC sp_attach_db @dbname = N'pubs',

@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',

@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'

5. 将只有一个数据文件的数据库附加到当前服务器

EXEC sp_attach_single_file_db @dbname = 'pubs',

@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'

----------------------------------------------

SQL中的注释

在SQL Server中,可以使用两种类型的注释字符:一种是ANSI标准的注释符“--”,它用于单行注释;另一种是与C语言相同的程序注释符号,即“/* */”。

SQL中的变量

Transact-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量。

局部变量:局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。局部变量可以作为计数器来计算循环执行的次数,或是控制循环执行的次数。另外,利用局部变量还可以保存数据值,以供控制流语句测试以及保存由存储过程返回的数据值等。局部变量被引用时要在其名称前加上标志“@”,而且必须先用DECLARE命令定义后才可以使用。

全局变量:全局变量是SQL Server系统内部使用的变量,其作用范围并不仅仅局限于某一程序,而是任何程序均可以随时调用。全局变量通常存储一些SQL Server的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。

使用全局变量时应该注意以下几点:

①全局变量不是由用户的程序定义的,它们是在服务器级定义的。

②用户只能使用预先定义的全局变量。

③引用全局变量时,必须以标记符“@@”开头。

④局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。

----------------------------------------------

SQL中的函数

在Transact-SQL语言中,函数被用来执行一些特殊的运算以支持SQL Server的标准命令。Transact-SQL 编程语言提供了三种函数:

一行集函数:行集函数可以在Transact-SQL语句中当作表引用。

二聚合函数:聚合函数用于对一组值执行计算并返回一个单一的值。

三标量函数:标量函数用于对传递给它的一个或者多个参数值进行处理和计算,并返回一个单一的值。

1.字符串函数

字符串函数包括:

基本字符串函数:UPPER、LOWER、SPACE、REPLICATE、STUFF、REVERSE、LTRIM、RTRIM。

字符串查找函数:CHARINDEX、PATINDEX。

长度和分析函数:DATALENGTH、SUBSTRING、RIGHT。

转换函数:ASCH、CHAR、STR、SOUNDEX、DIFFERENCE。

基本字符串函数

UPPER:将小写字符数据转换为大写的字符

LOWER:将大写字符数据转换为小写的字符

SPACE:返回由重复的空格组成的字符串。如:space(2)则返回两个空格

REPLICATE:以指定的次数重复字符表达式。

语法:REPLICATE ( character_e­xpression , integer_e­xpression )

如:Select REPLICATE(au_fname, 2) FROM authors,则重复两遍每个作者的名字

STUFF:删除指定长度的字符并在指定的起始点插入另一组字符。

语法:STUFF ( character_e­xpression , start , length , character_e­xpression )

(start是一个整形值,指定删除和插入的开始位置。如果 start 或 length 是负数,则返回空字符串。如果 start 比第一个 character_e­xpression 长,则返回空字符串。

length是一个整数,指定要删除的字符数。如果 length 比第一个 character_e­xpression 长,则最多删除到最后一个 character_e­xpression 中的最后一个字符。)

REVERSE:反转字符串Select REVERSE('abcd') 则返回‘dcba’

字符串查找函数

参考:http://www.badguy.name/article.asp?id=93

长度和分析函数

DATALENGTH :返回任何表达式所占用的字节数。

SUBSTRING:参考http://www.badguy.name/article.asp?id=105

LEFT:返回从字符串左边开始指定个数的字符。

RIGHT:返回从字符串左边开始指定个数的字符。Select RIGHT(au_fname, 5) FROM authors

2.日期和时间函数

datepart

示例:

3.数学函数

数学函数用于对数字表达式进行数学运算并返回运算结果。 常用的有:CEILING()、FLOOR()、ROUND()函数

4.转换函数

一般情况下,SQL Server会自动处理某些数据类型的转换。例如,如果比较 char 和 datetime 表达式、smallint 和 int 表达式、或不同长度的 char 表达式,SQL Server 可以将它们自动转换,这种转换被称为隐性转换。但是,无法由SQL Server自动转换的或者是SQL Server自动转换的结果不符合预期结果的,就需要使用转换函数做显示转换。转换函数有两个:CONVERT和CAST。

CAST ( e­xpression AS data_type )

CONVERT函数允许用户把表达式从一种数据类型转换成另一种数据类型,还允许把日期转换成不同的样式。其语法形式为:

CONVERT (data_type[(length)],e­xpression [,style])

流程控制语句是指那些用来控制程序执行和流程分支的命令,在SQL Server 2000中,流程控制语句主要用来控制SQL语句、语句块或者存储过程的执行流程。

IF Boolean_e­xpression

{ sql_statement | statement_block }

[ ELSE

{ sql_statement | statement_block } ]

BEGIN

{ sql_statement

| statement_block}

END

http://www.badguy.name/article.asp?id=702

换成

CREATEproc [dbo].[GetDataSet]

@TableList Varchar(1024)='*',--搜索表的字段,比如:’id,datatime,job‘,用逗号隔开

@TableName Varchar(100), --搜索的表名

@SelectWhere Varchar(1024)='',--搜索条件,这里不用写where,比如:job=’teacher‘and class='2'

@SelectOrderId Varchar(50),--表主键字段名。比如:id

@SelectOrder Varchar(200)='', --排序,可以使用多字段排序但主键字段必需在最前面.也可以不写,比如:order by class asc

@intPageNo int=1, --页号

@intPageSize int=10 ,--每页显示数

@RecordCount int OUTPUT --总记录数(存储过程输出参数)

as

declare @TmpSelect NVarchar(4000)

declare @Tmp NVarchar(4000)

declare @pagecount int

set nocount on--关闭计数

set @RecordCount=0

set @TmpSelect = 'select @RecordCount=count(*) from '+@TableName+' where '+@SelectWhere

execute sp_executesql

@TmpSelect,--执行上面的sql语句

N'@RecordCount int OUTPUT' , --执行输出数据的sql语句,output出总记录数

@RecordCount OUTPUT

if (@RecordCount = 0)--如果没有贴子,则返回零

return 0

set @pagecount = @RecordCount/@intPageSize

if(@RecordCount%@intPageSize>0)

set @pagecount=@pagecount+1

if(@pagecount<=0)

set @pagecount=1

if(@intPageNo>@pagecount)

set @intPageNo=@pagecount

/*判断页数是否正确*/

--if (@intPageNo - 1) * @intPageSize >@RecordCount --页号大于总页数,返回错误

--set @intPageNo=@pagecount

set nocount off--打开计数

if @SelectWhere != ''

begin

set @TmpSelect = 'select top '+str(@intPageSize)+' '+@TableList+' from '+@TableName+' where '+@SelectOrderId+' not in(select top '+str((@intPageNo-1)*@intPageSize)+' '+@SelectOrderId+' from '+@TableName+' where '+@SelectWhere +' '+@SelectOrder+') and '+@SelectWhere +' '+@SelectOrder

end

else

begin

set @TmpSelect = 'select top '+str(@intPageSize)+' '+@TableList+' from '+@TableName+' where '+@SelectOrderId+' not in(select top '+str((@intPageNo-1)*@intPageSize)+' '+@SelectOrderId+' from '+@TableName+''+@SelectOrder+') '+@SelectOrder

end

execute sp_executesql @TmpSelect

return(@@rowcount)

GO


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10031464.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存