Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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 - Fatal编程技术网

执行算术时忽略SQL语句

执行算术时忽略SQL语句,sql,oracle,Sql,Oracle,我一直在尝试PL/SQL中的一些算法。然而,当对数组的两个元素进行加法、乘法等运算时,我遇到了一个问题 我的目标是效率、薪水、现金。所有这些都由四个元素组成。我有以下问题。每当我以下面的方式划分这两个元素时 EFFICIENCY(2):=SALARIES(2)/CASH(2); 我得到一个被忽略的SQL语句错误。为什么会发生这种情况 附言:我在循环中划分元素,即,效率(I):=工资(I)/现金(I) 我发布了全部源代码: CREATE OR REPLACE PROCEDURE ANAL

我一直在尝试PL/SQL中的一些算法。然而,当对数组的两个元素进行加法、乘法等运算时,我遇到了一个问题

我的目标是效率、薪水、现金。所有这些都由四个元素组成。我有以下问题。每当我以下面的方式划分这两个元素时

EFFICIENCY(2):=SALARIES(2)/CASH(2);    
我得到一个被忽略的
SQL语句错误
。为什么会发生这种情况

附言:我在循环中划分元素,即,
效率(I):=工资(I)/现金(I)

我发布了全部源代码:

CREATE OR REPLACE PROCEDURE ANALYSIS
IS
CURSOR EMPLOYEES IS
 SELECT * FROM EMPLOYEE;
CURSOR BILLS IS
 SELECT * FROM BILL;
WORKER EMPLOYEE%ROWTYPE;
CASH BILL%ROWTYPE;
TYPE SALARY IS VARRAY(4) OF NUMBER(6,2);
SALARIES SALARY:=SALARY(0,0,0,0);
AMOUNTS SALARY:=SALARY(0,0,0,0);
EFFICIENCY SALARY:=SALARY(0,0,0,0);

BEGIN 

 OPEN EMPLOYEES;
 OPEN BILLS;
 LOOP
  FETCH EMPLOYEES INTO WORKER;
  EXIT WHEN EMPLOYEES%NOTFOUND;
  IF WORKER.BRANCHID=1 THEN 
   SALARIES(1):=SALARIES(1)+WORKER.SALARY;
  ELSIF WORKER.BRANCHID=2 THEN 
   SALARIES(2):=SALARIES(2)+WORKER.SALARY;
  ELSIF WORKER.BRANCHID=3 THEN 
   SALARIES(3):=SALARIES(3)+WORKER.SALARY;
  ELSIF WORKER.BRANCHID=4 THEN 
   SALARIES(4):=SALARIES(4)+WORKER.SALARY;
  END IF;
 END LOOP;
 LOOP
  FETCH BILLS INTO CASH;
  EXIT WHEN BILLS%NOTFOUND;
  IF CASH.BRANCHID=1 THEN
   AMOUNTS(1):=AMOUNTS(1)+CASH.AMOUNT;
  ELSIF CASH.BRANCHID=2 THEN
   AMOUNTS(2):=AMOUNTS(2)+CASH.AMOUNT;
  ELSIF CASH.BRANCHID=3 THEN
   AMOUNTS(3):=AMOUNTS(3)+CASH.AMOUNT;
  ELSIF CASH.BRANCHID=4 THEN
   AMOUNTS(4):=AMOUNTS(4)+CASH.AMOUNT;
  END IF;
 END LOOP;

 FOR I IN 1..4 LOOP
  EFFICIENCY(I):=SALARIES(I)/CASH(I);
  DBMS_OUTPUT.PUT_LINE(I);
 END LOOP;
END;

您正在使用现金,就好像它是一个数组:

EFFICIENCY(I):=SALARIES(I)/CASH(I);
但它不是一个数组:

CASH BILL%ROWTYPE;
所以你得到:

LINE/COL ERROR
-------- -----------------------------------------------------------------
43/3     PL/SQL: Statement ignored
43/30    PLS-00222: no function with name 'CASH' exists in this scope

我不知道您为什么只看到第一条错误消息?

您在使用现金,就好像它是一个数组:

EFFICIENCY(I):=SALARIES(I)/CASH(I);
但它不是一个数组:

CASH BILL%ROWTYPE;
所以你得到:

LINE/COL ERROR
-------- -----------------------------------------------------------------
43/3     PL/SQL: Statement ignored
43/30    PLS-00222: no function with name 'CASH' exists in this scope

我不知道您为什么只看到第一条错误消息?

您在使用现金,就好像它是一个数组:

EFFICIENCY(I):=SALARIES(I)/CASH(I);
但它不是一个数组:

CASH BILL%ROWTYPE;
所以你得到:

LINE/COL ERROR
-------- -----------------------------------------------------------------
43/3     PL/SQL: Statement ignored
43/30    PLS-00222: no function with name 'CASH' exists in this scope

我不知道您为什么只看到第一条错误消息?

您在使用现金,就好像它是一个数组:

EFFICIENCY(I):=SALARIES(I)/CASH(I);
但它不是一个数组:

CASH BILL%ROWTYPE;
所以你得到:

LINE/COL ERROR
-------- -----------------------------------------------------------------
43/3     PL/SQL: Statement ignored
43/30    PLS-00222: no function with name 'CASH' exists in this scope

我不知道您为什么只看到第一条错误消息?

您应该看到一条
PLS-00222:此范围内不存在名为“CASH”的函数
错误

CASH
被定义为
BILL%ROWTYPE
,而不是数组,因此您不能在算术中引用
CASH(I)
。我不确定你打算做什么,所以不清楚该如何修改,但从总体来看,我认为你的意思是指
金额

EFFICIENCY(2):=SALARIES(2)/AMOUNTS(2);    

您应该看到一个
PLS-00222:此范围内不存在名为“CASH”的函数
错误

CASH
被定义为
BILL%ROWTYPE
,而不是数组,因此您不能在算术中引用
CASH(I)
。我不确定你打算做什么,所以不清楚该如何修改,但从总体来看,我认为你的意思是指
金额

EFFICIENCY(2):=SALARIES(2)/AMOUNTS(2);    

您应该看到一个
PLS-00222:此范围内不存在名为“CASH”的函数
错误

CASH
被定义为
BILL%ROWTYPE
,而不是数组,因此您不能在算术中引用
CASH(I)
。我不确定你打算做什么,所以不清楚该如何修改,但从总体来看,我认为你的意思是指
金额

EFFICIENCY(2):=SALARIES(2)/AMOUNTS(2);    

您应该看到一个
PLS-00222:此范围内不存在名为“CASH”的函数
错误

CASH
被定义为
BILL%ROWTYPE
,而不是数组,因此您不能在算术中引用
CASH(I)
。我不确定你打算做什么,所以不清楚该如何修改,但从总体来看,我认为你的意思是指
金额

EFFICIENCY(2):=SALARIES(2)/AMOUNTS(2);    


你能不能发布一个简单完整的示例,说明你运行的代码中出现的错误?好的,我会的。但是我的代码不是很好,所以我避免发布它。我将编辑并发布它。“SQL语句被忽略”通常只是几个相关错误消息中的一条,前面的错误消息将说明实际错误;那么,你能将整个错误堆栈和代码一起添加到问题中吗?错误堆栈只有这么多。没别的了。事实上,如果我删除算术语句,我的代码就能完美编译。。。ELSIF
只需使用
工资(WORKER.BRANCHID):=工资(WORKER.BRANCHID)+WORKER.SALARY例如,您可以发布一个简单、完整的示例,说明您运行的导致错误的代码吗?好的,我会的。但是我的代码不是很好,所以我避免发布它。我将编辑并发布它。“SQL语句被忽略”通常只是几个相关错误消息中的一条,前面的错误消息将说明实际错误;那么,你能将整个错误堆栈和代码一起添加到问题中吗?错误堆栈只有这么多。没别的了。事实上,如果我删除算术语句,我的代码就能完美编译。。。ELSIF
只需使用
工资(WORKER.BRANCHID):=工资(WORKER.BRANCHID)+WORKER.SALARY例如,您可以发布一个简单、完整的示例,说明您运行的导致错误的代码吗?好的,我会的。但是我的代码不是很好,所以我避免发布它。我将编辑并发布它。“SQL语句被忽略”通常只是几个相关错误消息中的一条,前面的错误消息将说明实际错误;那么,你能将整个错误堆栈和代码一起添加到问题中吗?错误堆栈只有这么多。没别的了。事实上,如果我删除算术语句,我的代码就能完美编译。。。ELSIF
只需使用
工资(WORKER.BRANCHID):=工资(WORKER.BRANCHID)+WORKER.SALARY例如,您可以发布一个简单、完整的示例,说明您运行的导致错误的代码吗?好的,我会的。但是我的代码不是很好,所以我避免发布它。我将编辑并发布它。“SQL语句被忽略”通常只是几个相关错误消息中的一条,前面的错误消息将说明实际错误;那么,你能将整个错误堆栈和代码一起添加到问题中吗?错误堆栈只有这么多。没别的了。事实上,如果我删除算术语句,我的代码就能完美编译。。。ELSIF
只需使用
工资(WORKER.BRANCHID):=工资(WORKER.BRANCHID)+WORKER.SALARY例如,即使我不知道。它只是说SQL语句被忽略了。我正在使用Oracle11g。也许这与此有关连我也不知道。它只是说SQL语句被忽略了。我正在使用Oracle11g。也许这与此有关连我也不知道。它只是说SQL语句被忽略了。我正在使用Oracle11g。也许这与此有关连我都不知道