Click here to Skip to main content
15,892,643 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
Hi All,


I'm using the below code to run the sql procedure.

ALTER PROCEDURE [dbo].[USP_Get_xxx] @qryType varchar(50), @searchType varchar(50), @searchText varchar(50), @searchByCity varchar(50),  @advertiserId int
AS
 Declare @SQLQuery AS NVarchar(4000)

BEGIN	
 Set @SQLQuery =  ' SELECT AR.* FROM Tbl_RRRR AR  LEFT JOIN Tbl_PPP APS ON  AR.Id = APS. Id  WHERE ( AR.Company_Name LIKE @searchText  OR APS.Product_or_Service_Name   LIKE  @searchText   ) '

EXEC  sp_executesql @SQLQuery 


I'm getting the below error: Must declare the scalar variable "@searchText ".

If any one please suggest.

Thank You in advance,
Varshini M.
Posted
Updated 15-Mar-11 4:22am
v2

Try out below.

Set @SQLQuery =  ' SELECT AR.* FROM Tbl_RRRR AR  LEFT JOIN Tbl_PPP APS ON  AR.Id = APS. Id  WHERE ( AR.Company_Name LIKE ' + '''' +  @searchText + '''' + ' OR APS.Product_or_Service_Name   LIKE ' + '''' +  @searchText + '''' +  ) '


Search text should be clearly define in the SQL statement. It is passed as parameter so you need to make query such that the value of it placed in your @SQLQuery variable.

Hope it helps.
 
Share this answer
 
Why do you need dynamic SQL at all?

SQL
ALTER PROCEDURE [dbo].[USP_Get_xxx] 
	@qryType varchar(50), 
	@searchType varchar(50), 
	@searchText varchar(50), 
	@searchByCity varchar(50),  
	@advertiserId int
AS
SELECT 
	AR.* 
FROM 
	Tbl_RRRR AR  LEFT JOIN Tbl_PPP APS ON  
		AR.Id = APS. Id  
WHERE 
	(AR.Company_Name LIKE @searchText OR APS.Product_or_Service_Name   LIKE  @searchText)
 
Share this answer
 
Comments
Costica U 15-Mar-11 11:01am    
My 5+.
Manas Bhardwaj 15-Mar-11 12:18pm    
thnks
You must pass @searchText to sp_executesql

SQL
EXEC  sp_executesql @SQLQuery, N'@searchText varchar(50)', @searchText 
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900