Click here to Skip to main content
11,487,406 members (70,135 online)
Rate this: bad
good
Please Sign up or sign in to vote.
See more: SQL-server-2005
BEGIN
DECLARE @QRY NVARCHAR(300)
DECLARE @ORDER INT
SET @QRY='SELECT * FROM [dbo].[LIBMAST] WHERE (1=1) '
SET @QRY=@QRY+'CASE'+@ORDER+' WHEN'+1+'THEN ''ORDER BY ACCNO'' ELSE ''ORDER BY CALLNO''END'
END

error showing
Conversion failed when converting the nvarchar value 'SELECT * FROM [dbo].[LIBMAST] WHERE (1=1) CASE' to data type int."
Posted 21-Feb-13 22:16pm
josh-jw12.9K
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

Hi,

Try This... Your Dynamic Query is Wrongly Framed.

BEGIN
    DECLARE @QRY NVARCHAR(500)
    DECLARE @ORDER INT=2
    SELECT @QRY='SELECT * FROM [dbo].[LIBMAST] WHERE (1=1) ' + CASE WHEN @ORDER=1 THEN 'ORDER BY ACCNO ' ELSE 'ORDER BY CALLNO' END
    PRINT @QRY
END


Regards,
GVPrabu.
  Permalink  
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 2

Hi Josh

You have to cast the INT to NVARCHAR. I have modified your query like belw:

DECLARE @QRY VARCHAR(300)
DECLARE @ORDER INT
SET @QRY = N'SELECT * FROM [dbo].[datalog_574T] WHERE (1=1)'
SET @QRY = @QRY + 'CASE'+ CAST(@ORDER AS NVARCHAR(10)) +' WHEN' + CAST(1 AS NVARCHAR(1))+ 'THEN ''ORDER BY ACCNO'' ELSE ''ORDER BY CALLNO''END'

Regards
Willington
  Permalink  

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

  Print Answers RSS
0 Sergey Alexandrovich Kryukov 9,063
1 OriginalGriff 8,287
2 Sascha Lefèvre 3,334
3 Maciej Los 2,946
4 Richard Deeming 2,370


Advertise | Privacy | Mobile
Web03 | 2.8.150520.1 | Last Updated 22 Feb 2013
Copyright © CodeProject, 1999-2015
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100