如何在sql中编写动态查询 [英] how to write a dynamic query in sql
本文介绍了如何在sql中编写动态查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
BEGIN
DECLARE @CAMP VARCHAR(2)
DECLARE @TYPE VARCHAR(10)
SET @TYPE=''
SET @CAMP=''
DECLARE @QRY NVARCHAR(300)
SET @QRY='SELECT * FROM [dbo].[LIBMAST ] WHERE '
IF(@CAMP<>'')
BEGIN
SET @QRY=@QRY+'CAMPUS='+@CAMP+'AND '
END
IF(@TYPE<>'')
BEGIN
SET @QRY=@QRY+'TYPE= '+@TYPE
END
EXEC(@QRY)
END
在这种情况下,当两个参数都为空时,则为erro r显示'WHERE''附近的语法不正确。
当@TYPE参数为空时,
和@CAMP有值hsowing错误
''AND'附近的语法不正确'。
请帮帮我。
in this case when both parameter is empty then error showing "Incorrect syntax near ''WHERE''".
when @TYPE parameter is empty and @CAMP have values hsowing error "
Incorrect syntax near ''AND''".
please help me.
推荐答案
你可以写成如下
you can write it as follows
BEGIN
DECLARE @CAMP VARCHAR(2)
DECLARE @TYPE VARCHAR(10)
SET @TYPE='';
SET @CAMP=''
DECLARE @QRY NVARCHAR(300)
SET @QRY='SELECT * FROM [dbo].[LIBMAST ] WHERE (1=1)';
IF(@CAMP<>'')
BEGIN
SET @QRY=@QRY+' AND CAMPUS='''+@CAMP + '''';
END
IF(@TYPE<>'')
BEGIN
SET @QRY=@QRY + ' AND TYPE= '''+@TYPE + '''';
END
EXEC SP_ExecuteSql @QRY;
END
只需使用(1 = 1)真正的技巧。
Just use (1=1) always true trick.
hi,
对于动态查询...查看链接
< a href =http://www.mssqltips.com/sqlservertip/1160/execute-dynamic-sql-commands-in-sql-server/>在SQL Server中执行动态SQL命令 [ ^ ]
问候,
GVPrabu
For Dynamic Query... Check the link
Execute Dynamic SQL commands in SQL Server[^]
Regards,
GVPrabu
更改以下代码
Change the below code
SET @QRY=@QRY+'CAMPUS='+@CAMP+'AND '
to
to
SET @QRY=@QRY+'CAMPUS='+@CAMP+' AND '
AND之前的空格
谢谢
--RA
Space before "AND"
Thanks
--RA
这篇关于如何在sql中编写动态查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文