首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL 存储过程 返回查询集合的困惑

2012-09-13 
求助SQL 存储过程 返回查询集合的困惑小弟写了一个常用的存储过程基本上是经由设置@thatpattern变量后去查

求助SQL 存储过程 返回查询集合的困惑
小弟写了一个常用的存储过程 基本上是经由设置@thatpattern

变量后去查询得到pattern 但是我在运行这个预存程序后 发现

它只能返回一笔数据 但我数据表内 明明有多笔相同的thatpattern的数据

要返回pattern的数据集合 下面的写法却只返回一条 求助该如何写

这里的SQL语法 该怎么写 才能辅合我的要求呢?

SQL code
create PROC aiml2that匹配流程(@thatpattern Varchar(5000),@pattern text OUTPUT)ASBEGIN    SELECT @pattern=pattern FROM aiml2    WHERE  thatpattern=@thatpatternEND  Declare @thatpattern Varchar(5000),@pattern Varchar(5000)Set @thatpattern ='MY FAVORITE SUBJECT IS ARTIFICIAL INTELLIGENCE AND ROBOTS'select  @pattern=pattern from aiml2  WHERE  thatpattern=@thatpattern order by pattern ascselect  @pattern


[解决办法]
1、怎么用中文命名
2、传入参数不用个括号
3、@pattern有那么大吗还用得到text,尽量不要用text,ntext,最多使用varchar(max)
4、代码要适当换行,要有可读性
5、变量定义最好放在顶端,并做初始化
6、@pattern已经定义,无需再次定义

SQL code
create PROC aiml2that@thatpattern Varchar(5000),@pattern     varchar(8000) OUTPUTASBEGIN    SELECT @pattern=pattern     FROM aiml2    WHERE  thatpattern = @thatpattern      select  @pattern    END  --调用示例DECLARE @thatpattern varchar(50)DECLARE @pattern     VARCHAR(50)    SET @thatpattern    = 'a'SET @pattern        = 'b'--这里返回的是一个数据结果集exec dbo.aiml2that @thatpattern,@pattern OUTPUT
[解决办法]
SQL code
作为结果集返回去,在程序中用dataset存储返回前台就可以create PROC aiml2that匹配流程(@thatpattern Varchar(5000))ASBEGIN    SELECT  pattern FROM aiml2     WHERE  thatpattern=@thatpatternEND
[解决办法]
变量一次只能得到一个值了

返回多个值直接用查询

SQL code
create PROC aiml2that匹配流程(@thatpattern Varchar(5000),)asselect pattern  from aiml2  WHERE  thatpattern=@thatpattern order by pattern asc 

热点排行