【发布时间】:2012-04-01 05:36:02
【问题描述】:
假设我有一个包含下表的 Oracle 11.2 数据库:
TABLE: SURVEY
PARAMETER MALE FEMALE
--------------------------
SAMPLE_SIZE 102 95
AVG_WEIGHT 170 120
AVG_HEIGHT 5.9 5.4
这是一个最小的 PL/SQL 存储过程示例,它选择男性的平均体重并将其(例如 170)放入变量 v_stat。
PROCEDURE get_stat (gender IN VARCHAR2)
AS
v_stat number;
BEGIN
SELECT male INTO v_stat FROM survey WHERE parameter = 'avg_weight';
END get_stat;
注意 IN 参数 gender 在这里没有做任何事情。我想要的是传入变量gender,它可能等于“男性”或“女性”,并在SELECT语句中以某种方式使用gender(而不是“男性”)。目标是将gender 作为一个变量传入,该变量可用于返回例如gender 定义的男性或女性的平均体重。
我知道我可能可以将 IF/THEN/ELSE 语句与两个单独的 SELECT 语句一起使用,但我想知道是否有一种优雅的方法可以通过将上述 SELECT 语句中的“男性”更改为其他内容来仅使用一个 SELECT 语句?
请注意,这是我之前的问题的重做
How to programmatically set table name in PL/SQL?
这被(正确地)批评为不是一个现实的问题。
【问题讨论】: