首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在存储过程(Informix)中自定义"WHERE“?

在存储过程(Informix)中自定义"WHERE“?
EN

Stack Overflow用户
提问于 2009-12-21 10:51:27
回答 2查看 3K关注 0票数 1

我正在为一个必须在WHERE子句中使用不同条件搜索表的应用程序做规范。

例如(不是实际的表):

类型1

代码语言:javascript
运行
复制
select name from employees where active = true;

或类型2

代码语言:javascript
运行
复制
select name from employees where idBoss = 3;

我宁愿创建一个具有参数"type“的存储过程,也不愿创建两个具有相同代码和不同"where”子句的存储过程。

这个是可能的吗?

注意:我有两个程序员;一个只知道Informix,一个只知道.NET。为了最大限度地减少问题,我使用存储过程来完成对数据库的所有调用,这样db程序员和.net程序员就不需要彼此了。

EN

Stack Overflow用户

回答已采纳

发布于 2009-12-21 11:15:20

您可以在Informix中使用dynamic SQL -有关更多详细信息,请参阅this link

代码语言:javascript
运行
复制
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,那么下一个最好的办法是:

代码语言:javascript
运行
复制
IF IN_PARAMETER = 1 THEN
   select name from employees WHERE active = true;
ELSE
   select name from employees WHERE idboss = 3;
END IF;
票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1937917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档