如何在sql中编写动态查询 [英] how to write a dynamic query in sql

查看:91
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆