相关疑难解决方法(0)

PL/SQL:在存储过程中使用IN参数重写SELECT语句

假设我有一个包含下表的Oracle 11.2数据库:

TABLE: SURVEY

PARAMETER    MALE   FEMALE 
--------------------------
SAMPLE_SIZE  102       95
AVG_WEIGHT   170      120
AVG_HEIGHT   5.9      5.4
Run Code Online (Sandbox Code Playgroud)

这是一个示例最小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;
Run Code Online (Sandbox Code Playgroud)

请注意,IN参数gender在此处不执行任何操作.我想要的是传入变量gender,它可能等于"男性"或"女性",并且gender在SELECT语句中使用某种方式(而不是"男性").目标是gender作为可用于返回的变量传入,例如,男性或女性的平均重量,如gender.

我知道我可以使用带有两个单独的SELECT语句的IF/THEN/ELSE语句,但是我想知道是否有一种优雅的方法可以通过将上面的SELECT语句中的'male'更改为其他语句来使用一个SELECT语句?

请注意,这是我之前提出的问题

如何以编程方式在PL/SQL中设置表名?

那是(正确地)批评不是一个现实的问题.

oracle plsql

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

oracle ×1

plsql ×1