首页 > 解决方案 > 如何根据变量值使用不同的条件。临 C / SQL

问题描述

我对 pro c 很陌生,想知道以下是否可行。

char car[11];
strcpy(car,""); /* default value*/

如果这个变量有一个值,它应该在下面的 sql 中使用:所以只运行给定的汽车值。

select *
from vehicles
where car = :car;

但是,如果 car 为 null,则执行以下 sql: 所以为所有汽车运行。

select *
from vehicles;

有没有一种方法可以合并这两个而不需要创建重复的 sql 查询,其中一个搜索给定的汽车值,另一个搜索所有汽车。

任何帮助,将不胜感激。

标签: sqloracleoracle-pro-c

解决方案


对于 SQL,那将是

select *
from vehicles
where (car = :car or :car is null)

SQL*Plus 中的示例(不用担心&&car替换变量;您将使用:car):

传递变量值:

SQL> with vehicles (car) as
  2    (select 'BMW'      from dual union all
  3     select 'Mercedes' from dual union all
  4     select 'Audi'     from dual
  5    )
  6  select *
  7  from vehicles
  8  where (car = '&&car' or '&&car' is null);
Enter value for car: Audi

CAR
--------
Audi

没有价值:

SQL> undefine car
SQL> /
Enter value for car:
                                --> here I pushed ENTER, without entering a value
CAR
--------
BMW
Mercedes
Audi

SQL>

推荐阅读