我有一个我写过的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))
答案 0 :(得分:0)
您没有为@MajorGroupID varchar
提供长度,因此默认情况下它将为1
,此时它不会在表格中找到任何内容。
提供长度,例如@MajorGroupID varchar(30)
。