【发布时间】:2014-06-01 18:35:19
【问题描述】:
我编写的 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))
【问题讨论】:
-
那么创建函数的代码会很方便,不是吗?您正在寻找的是一个表值函数。 technet.microsoft.com/en-us/library/ms191165(v=sql.105).aspx
-
@GSerg,这实际上应该是一个表值函数...我将发布整个函数..
-
您没有为 varchar 提供长度,因此它将是
1并且会被截断。 -
@GSerg,在我做出改变之后,它就起作用了。请作为答案发布,以便我接受它
-
错误,SQL Server 2010,顺便问一下?我一定以某种方式错过了那个版本:-)
标签: sql sql-server function