Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用计数(*)时,如何获取未发现异常的数据输出?_Sql_Oracle_Exception_Plsql - Fatal编程技术网

Sql 使用计数(*)时,如何获取未发现异常的数据输出?

Sql 使用计数(*)时,如何获取未发现异常的数据输出?,sql,oracle,exception,plsql,Sql,Oracle,Exception,Plsql,我试图确定为什么异常输出没有正确返回 这是为Oracle SQL开发人员准备的,他们正在练习PL/SQL。如果需要,我可以提供表格代码 SET serveroutput on CREATE OR REPLACE Procedure GetPermissions(user IN VARCHAR, docNum OUT INTEGER) IS BEGIN SELECT count(*) INTO docNum FROM UserPermissions where UserName=user;

我试图确定为什么异常输出没有正确返回

这是为Oracle SQL开发人员准备的,他们正在练习PL/SQL。如果需要,我可以提供表格代码

SET serveroutput on

CREATE OR REPLACE Procedure GetPermissions(user IN VARCHAR, docNum OUT 
INTEGER)
IS
BEGIN
SELECT count(*) INTO docNum FROM UserPermissions where UserName=user;

EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('Nothing found for this username');
END;
/

DECLARE
doc_count INTEGER;
BEGIN
 doc_count:=0;
 GetPermissions('Steve', doc_count);
 dbms_output.put_line(' Number of documents: ' || doc_count);
END;
/

我希望在运行“Steve”时,异常会返回其输出(未找到任何内容),因为在我创建的表中,Steve不是用户名。当前运行时,is仅显示“文档数:0”。

COUNT
始终返回一个结果,在这种情况下,它返回一行,其中0:

COUNT(*)
--------
0
只有当
选择进入
查询未返回任何行时,才会出现
未找到数据

例如,如果您尝试为给定用户选择权限,将抛出
找不到任何数据

SELECT permission 
INTO p_permission
FROM UserPermissions 
WHERE UserName=user;

在这种情况下,查询将返回一个空结果。

COUNT
始终返回一个结果,在这种情况下,它返回一个包含0的单行:

COUNT(*)
--------
0
只有当
选择进入
查询未返回任何行时,才会出现
未找到数据

例如,如果您尝试为给定用户选择权限,将抛出
找不到任何数据

SELECT permission 
INTO p_permission
FROM UserPermissions 
WHERE UserName=user;

在这种情况下,查询将返回一个空结果。

当查询的输出为无行时,选择“进入查询返回且未找到数据”异常。不是在0的时候


select into子句的另一个异常是行太多,其中查询返回的行数超过1行,而您正试图将所有这些行分配给一个变量。

select into查询返回时未找到任何数据。当查询输出为无行时,出现异常。不是在0的时候


select into子句的另一个例外是行太多,查询返回的行数超过1行,而您正试图将所有这些行分配给一个变量。

。。。或者如果Steve有多个权限,它将返回太多行:)@Littlefoot,或者如果Steve只有一个权限,它将正常完成:)我只知道他在某个时间点有0个权限,但对于Steve,你永远无法确定。嗯,对。。。我忘记了查询实际上可能会返回一些内容:)。。。或者如果Steve有多个权限,它将返回太多行:)@Littlefoot,或者如果Steve只有一个权限,它将正常完成:)我只知道他在某个时间点有0个权限,但对于Steve,你永远无法确定。嗯,对。。。我忘记了查询实际上可能会返回一些内容:)