- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想根据另一个变量是否为空来为变量赋值。我知道我在下面给出的相同代码中存在错误,但我这样试过,但不知道如何完成。虽然它清楚地说明了我想做什么。
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 关键字SQL。 END
关键字在 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/
在表列中,我有这个值: DV-2011-01-000004(数据类型为varchar2) 我怎样才能得到字符串“000004”的一部分?在 t-sql 中,他们有这个 right() 函数,但在 PL
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 9 年前。 Improve this qu
当我在 plsql 过程的主体中使用 create 语句时,出现错误PLS-00103 在期望以下之一时遇到符号创建....谁能告诉我这是什么原因和解决方案。 最佳答案 在 PL/SQL 中你不能直接
我一直在使用 PL/SQL 为 Oracle db 创建包,我正在尝试找到一种不使用“put_line”命令来调试 PL/SQL 包的好方法,有没有人有一些关于如何成功调试一个好的提示Toad 或 S
我有一个函数会返回一个类型为 my_table%ROWTYPE 的记录,在调用者中,我可以检查返回的记录是否为空,但是 PL/SQL 提示 if 语句 PLS-00306: wrong number
我想在自动化测试中检查 PL/SQL 查询语法,看起来 https://github.com/porcelli/plsql-parser 可能对此有用。我并不容易找到我将如何安装和使用它。 请注意,这
1、PL/SQL官网下载 官网下载地址:https://www.allroundautomations.com/registered-plsqldev/ 或者在我的网盘下载 链接: h
我有一个充满了我想要运行的 PLSQL 脚本的目录,问题是该目录的内容是动态的,我无法知道这些脚本的名称是什么。 我必须编写一些东西来运行该目录中的所有 sql 文件,但我找不到在 PLSQL 中调用
我正在构建一个使用 PHP 从 Oracle10g 数据库服务器获取数据的应用程序。我的输入表单有一系列复选框,这些复选框通过数组提交到处理页面(代码过滤到相关元素): 处理页面调
我收到以下错误。在 SELECT CASE 语句处收到错误。 PLS-00428: an INTO clause is expected in this SELECT statement FOR RE
我对 plsql 中的动态变量有点了解。我在 EXECUTE IMMEDIATE 上收到错误“无效的主机/绑定(bind)变量名称”陈述。提前致谢。 CREATE OR REPLACE PROCEDU
我正在使用 execute immediate 在 pl/sql 中创建一个临时表,并且还在表中插入为什么要创建表。 之后我更新表格。但是我收到错误表不存在,因为它没有创建表,所以立即执行 示例代码-
我有一个程序,它每隔一小时运行一次,填充一张表。程序处理的记录很多,所以每次执行大约需要12~17分钟。 您现在是否有办法(即触发器)记录每次执行的持续时间(即记录到表中)? 最佳答案 我不知道允许自
我正在分析一些遗留代码。它是大约 80.000 行旧的 plsql 代码。乍一看,源代码中有相当多的重复内容需要删除。而不是做 diff 的手册并查看每个文件,必须有一些工具/命令行混淆来检测源代码的
我是 oracle 作业脚本的新手。我写了一些清除程序来清除所有旧数据并保留过去 3 个月的数据...程序已成功执行。当我手动调用时它也可以工作。程序如下: CREATE OR REPLACE PRO
以下是我的查询: Select Count(*) from Table1 s left join Table2 d
如何使用 put 函数。我的程序不是用 put 编译的。但 putline 工作正常。我想在同一行打印 最佳答案 下面是使用 UTL_FILE.PUT 和 UTL_FILE.PUT_LINE 调用的代
使用关联数组时可以使用SELECT FROM吗?我正在通过.NET应用程序将数组传递给存储过程,并且我希望能够从另一个表中进行选择时将该数组用作条件。可以说我要向该过程传递一个ID数组,我想能够做到这
您好,我有一个 oracle 函数已经存在于数据库中,我必须使用它。如果我如下调用该函数,它工作正常 select PKG_Util.employeedetails('12345') from dua
我在 PL/SQL 中有一个情况,我的过程每分钟都会被一个作业调用。代码如下 procedure ExecuteProc is CURSOR c1 IS SELECT * FROM t
我是一名优秀的程序员,十分优秀!