存储过程(Stored Procedure)使用(三)

来源:互联网 发布:看篮球的软件 编辑:程序博客网 时间:2024/05/16 00:41

 继第二篇后,后面还使用存储过程实现了其它功能

字符串的拆分:

       如果存储过程参数只有一个,是nvarcharvarchar等字符串类型,如果有多个字符串,要多次调用此存储过程,这样要多次连接数据库,效率较低,可以把多个字符串组成一个字符串,并有符号分隔开,而在存储过程中对字符串进行拆分,再进行其它操作,这样,只需要调用一次存储过程,效率当然比多次调用高。如下就是如何进行字符串的拆分(字符串是用逗号分隔):

 

说明一下流程:找到字符串@Name中第一个分隔符“,”的位置,在SQL中,字符串的位置是从1开始的(要与C#中的字符串起始位置区别开来)。然后把此分隔符前的字符串取出,此字符串就是第一个需要的字符串,把字符串@Name减去已经取得的字符串及其分隔符。这样,再重新对已经减去取得字符串的字符串进行操作,不断重复。直到最后一个字符串,此字符串没有分隔符,它本身就是需要取的字符串。

这里几个函数要说明一下:

1charindex(分隔符,字符串):取得指定的分隔符在字符串中的第一个位置。返回int,如字符串,”abc,efg,hij”,调用charindex’,’,’ abc,efg,hij’),则返回4。如果没有匹配的分隔符,则返回0.

2left(字符串,左起N个字符),返回此字符串左起N个字符。如调用left(abcdefg,3),则返回abc

    (3right((字符串,右起N个字符),返回此字符串右起N个字符。如调用right(abcdefg,3),则返回efg

 

随机选择表中记录:

       如果需要从表中随机选择N条记录返回,则需要用到order by newid()。具体格式如下:

select top N * from tableName order by newid()

       注意,在这里,N是一个已经确定的数,即在调用之前已经确定N的值。*表示要选择的表的列,可以添加where语句进行在符合条件的行中随机选择。如下面所示,从A表中随机选择2条符合条件的记录:

 

    如果N是在SQL中通过其它表查询出来的数值才能确定,则可以先把语句写在变量中,待N确定后再执行它,如下所示。

临时表的使用:

       如果需要先查询出一堆记录,再从这堆记录中进行取数据,那么用临时表是不错的选择。创建临时表,前表名需要加“#”。格式是:

create table #t(参数名 参数类型),下面是实例,把表A,表B,表C中的名称都查询出来放在临时表中,然后取出临时表的全部名称。

 

   至此,已经将所用到的使用存储过程的功能使用进行了介绍,希望可以帮到初学者,同时也可以记录一下自己学习的过程。呵呵

 

 

 

 

 

 

 

 

原创粉丝点击