gpt4 book ai didi

oracle - PLSQL中根据条件(其他变量的值)为变量赋值

转载 作者:行者123 更新时间:2023-12-05 02:21:17 25 4
gpt4 key购买 nike

我想根据另一个变量是否为空来为变量赋值。我知道我在下面给出的相同代码中存在错误,但我这样试过,但不知道如何完成。虽然它清楚地说明了我想做什么。

declare 
lv_var1 varchar2(500);
lv_var2 varchar2(20);
ld_date date;

begin
lv_var2 := 'sample value';
lv_var1 := case ld_date when not null
then lv_var2
end case;

dbms_output.put_line(lv_var1);
end;

ld_date 不为空时,我想将 lv_var2 的值赋给 lv_var1,否则 lv_var1将为空。

我收到的错误是 ORA-06550。这可能是因为 case 语句,但我还能用什么来代替它来获得结果。

请帮忙。谢谢……

最佳答案

您在 CASE 表达式中有语法错误,在 中使用它时不需要 CASE 关键字和 END 关键字SQLEND 关键字在 PL/SQL 中是必需的。

CASE用作SQL:

SQL> SET serveroutput ON
SQL> DECLARE
2 lv_var1 VARCHAR2(500);
3 lv_var2 VARCHAR2(20);
4 ld_date DATE;
5 BEGIN
6 ld_date:= SYSDATE;
7 lv_var2 := 'sample value';
8 lv_var1 :=
9 CASE
10 WHEN ld_date IS NOT NULL THEN
11 lv_var2
12 END;
13 dbms_output.put_line(lv_var1);
14 END;
15 /
sample value

PL/SQL procedure successfully completed.

SQL>

PL/SQL 中使用 CASE:

SQL> SET serveroutput ON
SQL> DECLARE
2 lv_var1 VARCHAR2(500);
3 lv_var2 VARCHAR2(20);
4 ld_date DATE;
5 BEGIN
6 ld_date := SYSDATE;
7 lv_var2 := 'sample value';
8 CASE
9 WHEN ld_date IS NOT NULL THEN
10 lv_var1 := lv_var2;
11 END CASE;
12 dbms_output.put_line(lv_var1);
13 END;
14 /
sample value

PL/SQL procedure successfully completed.

SQL>

PL/SQL

中可以使用 IF 编写相同的内容:
SQL> SET serveroutput ON
SQL> DECLARE
2 lv_var1 VARCHAR2(500);
3 lv_var2 VARCHAR2(20);
4 ld_date DATE;
5 BEGIN
6 ld_date := SYSDATE;
7 lv_var2 := 'sample value';
8 IF ld_date IS NOT NULL THEN
9 lv_var1 := lv_var2;
10 END IF;
11 dbms_output.put_line(lv_var1);
12 END;
13 /
sample value

PL/SQL procedure successfully completed.

SQL>

关于oracle - PLSQL中根据条件(其他变量的值)为变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35454909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com