【问题标题】:Stored Procedure with SELECT and NULLS带有 SELECT 和 NULLS 的存储过程
【发布时间】:2014-07-07 07:53:46
【问题描述】:

我有以下存储过程:

ALTER PROCEDURE [dbo].[SearchProfile]

(
@Type varchar,
@Name varchar
)

AS
SELECT * 
FROM dbo.Profiles 
WHERE ((@Type IS NULL) 
 OR (dbo.Profiles.Type = @Type)) 
 AND  ((@Name IS NULL) 
 OR (Name = @Name));

当我执行此操作时:

exec SearchProfile NULL, NULL

它返回的所有行都可以,但是当我将其中一个 NULL 更改为某个值时...

exec SearchProfile 'abc', NULL

它不返回任何东西。

我做错了什么? 提前致谢。

【问题讨论】:

标签: sql sql-server select stored-procedures


【解决方案1】:

你需要指定变量的长度。

如果你跑了

DECLARE @Type varchar = 'abc'

SELECT @Type

返回

a

所以改成类似

@Type varchar(50),
@Name varchar(50)

SQL Fiddle DEMO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 2018-01-28
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多