我正在为一个必须在WHERE子句中使用不同条件搜索表的应用程序做规范。
例如(不是实际的表):
类型1
select name from employees where active = true;或类型2
select name from employees where idBoss = 3;我宁愿创建一个具有参数"type“的存储过程,也不愿创建两个具有相同代码和不同"where”子句的存储过程。
这个是可能的吗?
注意:我有两个程序员;一个只知道Informix,一个只知道.NET。为了最大限度地减少问题,我使用存储过程来完成对数据库的所有调用,这样db程序员和.net程序员就不需要彼此了。
发布于 2009-12-21 11:15:20
您可以在Informix中使用dynamic SQL -有关更多详细信息,请参阅this link。
DEFINE v_sql VARCHAR(250);
LET v_sql = "select name from employees";
IF IN_PARAMETER = 1 THEN
LET v_sql = v_sql || " WHERE active = true"
ELSE
LET v_sql = v_sql || " WHERE idboss = 3"
END IF;
PREPARE stmt FROM v_sql;
EXECUTE stmt;
FREE stmt;如果你不能使用动态SQL,那么下一个最好的办法是:
IF IN_PARAMETER = 1 THEN
select name from employees WHERE active = true;
ELSE
select name from employees WHERE idboss = 3;
END IF;https://stackoverflow.com/questions/1937917
复制相似问题