【发布时间】:2015-11-01 21:13:15
【问题描述】:
这是我正在尝试创建的功能
CREATE FUNCTION fnGetValue
(
@WhereClause VARCHAR(256)
)
RETURNS TABLE
AS
RETURN
SELECT A.Name, B.Value
FROM A
INNER JOIN B ON A.Akey = B.AKey
WHERE + @WhereClause +
GO
参数@WhereClause 是从我的PHP 构建的,类似于
A.Akey IN (2,3)
但是当我尝试这个时,我得到了这个错误
在预期条件的上下文中指定的非布尔类型表达式,靠近“AND”。
我想让大家知道,我知道查询是错误的,因为 SQL 需要一个可以评估为布尔值的表达式。但我的问题是如何实现我正在努力的目标。请帮帮我。
【问题讨论】:
-
为什么要在 SQL 中为此创建函数?为什么不创建 PHP 函数?
-
@Mr.P 这样它就可以在 C++ 等软件的其他部分使用。当然,我可以从 C++ 调用 PHP 函数,但我认为从长远来看,数据库中的函数会更加清晰和容易。
-
如果你打算传递整个
where子句,那么创建一个函数没有多大意义:你应该只创建一个视图并执行select * from view where (where clause here) -
@user1429322 是 MySQL 吗?
-
你不应该在这里使用动态 SQL 查询吗?
标签: sql sql-server