.net - SQL subquery return more that 1 value -
hi trying execute query row between number , trying rows between 10-20. using subquery can use row_number()
function
the query fails error:
sql subquery return more 1 value
so need figure way out because need more 1 resulset out of query
procedure dbo.search ( @search_text varchar(max), @search_category varchar(max), @page int, @count int output ) set nocount on declare @lower_limit int = (@page-1)*10; declare @upper_limit int = (@page * 10) + 1; -- set @count =0 if @search_category='deal' begin set @count = (select count(*) dealdata dealinfo '%' + @search_text + '%' or dealname '%' + @search_text + '%' or dealdescription '%' + @search_text + '%' group dealid); select x.dealid , x.row ( select dealid,row_number() over(order dealid) row dealdata dealinfo '%' + @search_text + '%' or dealname '%' + @search_text + '%' or dealdescription '%' + @search_text + '%' group dealid)x x.row < @upper_limit , x.row > @lower_limit end
this full procedure , when try call following code exception @ _command.executereader(); subquery returned more 1 value. not permitted when subquery follows =, !=, <, <= , >, >= or when subquery used expression.
_query = "search"; _command = new sqlcommand(_query, _connection); _command.commandtype = commandtype.storedprocedure; _command.parameters.addwithvalue("@search_text", search_text); _command.parameters.addwithvalue("@search_category", search_category); _command.parameters.addwithvalue("@page", page); var returnparameter = _command.parameters.add("@count", sqldbtype.int); returnparameter.direction = parameterdirection.output; _reader = _command.executereader(); while (_reader.read()) { search_result index = new search_result(); index.category_id = this._categoryidfromname(search_category); index.post_id = _reader.getvalue(0).tostring(); _searchlist.add(index); }
the problem part of sp:
set @count = ( select count(*) dealdata dealinfo '%' + @search_text + '%' or dealname '%' + @search_text + '%' or dealdescription '%' + @search_text + '%' group dealid)
specifically, group dealid
part. if have multiple dealid
on table, going multiple rows result. obviously, can't assign on scalar variable. either @count
need declared table variable (which change logic of rest of sp), or rid of group dealid
, , verify gives desired results.
Comments
Post a Comment