我正在为必须在WHERE子句中搜索具有不同条件的表的应用程序做规范。
例如(不是实际的表格):
输入1
select name from employees where active = true;
或输入2
select name from employees where idBoss = 3;
我宁愿使用参数“type”创建一个存储过程,而不是使用相同的代码和不同的“where”子句创建两个存储过程。
这可能吗?
注意:我有2个程序员;一个人只知道Informix,只知道.NET。为了最大限度地减少问题,我正在使用存储过程对数据库进行所有调用,因此db程序员和.net程序员不需要彼此需要。
答案 0 :(得分:2)
您可以在informix中使用动态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;
答案 1 :(得分:1)
为什么要为这么短的东西创建存储过程?
考虑使用Linq。哪里只是一个过滤器,它接受一个返回true / false的lambda /函数。