SQL函数不能正常工作,但不作为函数时

时间:2014-06-01 18:35:20

标签: sql sql-server function

我有一个我写过的SQL函数的另一个问题。如果我不在函数中运行它并使用声明的变量,那么它可以完美地运行。但是只要我把它放入一个函数并运行它,就没有任何东西出现,它是空的。

我不能把它放到存储过程中,它需要在函数中。

代码是

select * from [MYTABLE]
where MajorGroupID = @MajorGroupID
and ((@Status = 0 and (
Inactive = 0)
))
or MajorGroupID = @MajorGroupID and (@Status = 1 and (Inactive = 0 or Inactive = 1))

我对功能并不熟悉,我可以用功能做基本的事情,但是在添加逻辑时。如果允许我使用存储过程,那么我就不会遇到问题。

这是MSSQL并使用SQL Server 2010。

  

编辑,添加了完整的功能

CREATE FUNCTION [dbo].[WT_FN_GET_MYTABLE_By_MajorGroupID_Inactive]
(
@MajorGroupID varchar,
@Status int
)
RETURNS TABLE 
AS
RETURN

select * from [MYTABLE]
where MajorGroupID = @MajorGroupID
and ((@Status = 0 and (
Inactive = 0)
))
or MajorGroupID = @MajorGroupID and (@Status = 1 and (Inactive = 0 or Inactive = 1))

1 个答案:

答案 0 :(得分:0)

您没有为@MajorGroupID varchar提供长度,因此默认情况下它将为1,此时它不会在表格中找到任何内容。

提供长度,例如@MajorGroupID varchar(30)