SQL Server存储过程:在select语句中带有撇号的变量,不检索值

时间:2016-04-26 22:36:01

标签: sql-server stored-procedures

我有一个这样的存储过程:

ALTER PROCEDURE [dbo].[spBlogPostGet]
    @Id int NULL,
    @ParentBlogTitle varchar(150) NULL
AS
    IF @Id > 0
    BEGIN   
        SELECT * 
        FROM tblBlogPosts 
        WHERE Id = @Id;
    END
    ELSE IF @ParentBlogTitle IS NOT NULL
    BEGIN       
        SELECT * 
        FROM tblBlogPosts 
        WHERE ParentBlogTitle = @ParentBlogTitle;
    END
    ELSE
    BEGIN
        SELECT * 
        FROM tblBlogPosts 
        ORDER BY(DateCreated);
    END

我试图测试:

use MyDb

exec spBlogPostGet
          @Id = 0, @ParentBlogTitle = 'some dude''s Blog';

我有一篇博客文章,上面有父母博客标题" Some Dude's Blog"但我的存储过程没有检索到这一行。如果我尝试检索其名称中没有撇号的行,则会选择指定的行。

我似乎无法找到解决方案 - 我对SQL有一个非常基本的了解,并希望得到一些指导。

谢谢

1 个答案:

答案 0 :(得分:1)

... aaaaa我是个白痴。我通过ajax请求传递我的值,并从下拉列表中获取文本而不是选定的值。我的sql表显示正确的值,但是当单步执行我的代码时,我实际上是传递了下拉列表的全部内容,所以难怪我的查询没有返回任何内容。