Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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_Arrays_Oracle_Loops_Stored Procedures - Fatal编程技术网

在SQL数组中循环

在SQL数组中循环,sql,arrays,oracle,loops,stored-procedures,Sql,Arrays,Oracle,Loops,Stored Procedures,我正在尝试循环浏览学校列表,如果关联表中的学校id和上下文id之间还没有交叉引用,请插入它 我收到以下错误: Erreur(141,3): PL/SQL: SQL Statement ignored Erreur(141,24): PLS-00321: expression 'IDS' is inappropriate as the left hand side of an assignment statement Erreur(141,28): PL/SQL: ORA-00904: : inv

我正在尝试循环浏览学校列表,如果关联表中的学校id和上下文id之间还没有交叉引用,请插入它

我收到以下错误:

Erreur(141,3): PL/SQL: SQL Statement ignored
Erreur(141,24): PLS-00321: expression 'IDS' is inappropriate as the left hand side of an assignment statement
Erreur(141,28): PL/SQL: ORA-00904: : invalid identifier
Erreur(143,3): PL/SQL: Statement ignored
Erreur(143,16): PLS-00302: component 'FIRST' must be declared
(下面代码块中的第一行被视为136)


你不应该需要一个循环。您可以只插入所有不匹配的行:

查询将类似于:

您的表结构并不完全清楚,但这应该是总体思路

PROCEDURE APPLY_IMPLICITE(P_ID IN TBL_CONTEXTES.ID%TYPE, P_UID IN TBL_ECOLE_CONTEXTES.LAST_UID_MODIFICATION%TYPE)
IS
  TYPE IDS IS TABLE OF TBL_CONTEXTES.ID%TYPE INDEX BY PLS_INTEGER;
  ROW_COUNT NUMBER;
BEGIN
  -- Get the IDs of all the schools
  SELECT ECOLE_ID INTO IDS FROM MV_ECOLES;
  -- Loop through all the schools
  FOR i IN IDS.FIRST..IDS.LAST LOOP
    -- Verify if a row exists
    SELECT COUNT(*) INTO ROW_COUNT FROM TBL_ECOLE_CONTEXTES WHERE ECOLE_ID = IDS(i) AND ID = P_ID;
    -- If no row exist, insert.
    IF ROW_COUNT = 0 THEN
      INSERT INTO TBL_ECOLE_CONTEXTES (ID, ECOLE_ID, LAST_UID_MODIFICATION)
      VALUES (P_ID, IDS(i), P_UID);
    END IF;
  END LOOP;

END APPLY_IMPLICITE;
INSERT INTO TBL_ECOLE_CONTEXTES
    (ID, ECOLE_ID, LAST_UID_MODIFICATION)
SELECT PID, ECOLE_ID, P_UID 
FROM TBL_ECOLE_CONTEXTES 
WHERE ECOLE_ID NOT IN (SELECT IDS FROM FROM MV_ECOLES WHERE ID = P_ID)