当前位置: 首页 > 面试题库 >

Oracle 11g“查找变量不存在”。

傅乐湛
2023-03-14
问题内容

我在以下代码中收到“ ORA01006绑定变量在第15行不存在”错误:

DECLARE
  v_search_string varchar2(4000) := 'OK';
  v_query_str VARCHAR2(4000);
  match_count integer;
BEGIN  
  FOR t IN (SELECT owner,
                   table_name, 
                   column_name 
              FROM all_tab_columns
             WHERE data_type in ('CHAR', 'VARCHAR2', 'NCHAR', 'NVARCHAR2') And TABLE_NAME = 'T1' And OWNER = 'O1') 
  LOOP   
    Begin
      v_query_str := 'SELECT COUNT(*) FROM '|| t.table_name || ' WHERE ' || t.column_name || ' Like ''' || '%:1%' || '''';
      dbms_output.put_line(v_query_str);
      EXECUTE Immediate v_query_str
      INTO match_count  
      USING v_search_string; 
      IF match_count >= 0 THEN 
        dbms_output.put_line( t.owner || '.' || t.table_name ||' '||t.column_name||' '||match_count );
      END IF; 
    END;
  END LOOP;
END;

我只是试图遍历表中的所有字符列,并计算每个字符列中与v_search_string值匹配的值。

行“ dbms_output.put_line(v_query_str);” 打印一行:SELECT COUNT(*)FROM T1 WHERE Col1
Like’%:1%’

表中有10列是指定的类型。

显然那里有一个绑定变量(%1),所以我不知道发生了什么。


问题答案:

如下所示形成字符串。

t.column_name || ' Like ''%''||:1||''%'''

绑定变量不应包含在单引号中,因为它将被视为String文字。因此,当您使用USING它时,便以这种排他性告终。



 类似资料:
  • 问题内容: 在Java中,可以使用或在变量上查找其类型。 如何在JavaScript中找出不是强类型的变量类型? 例如,如何知道a是a 还是a 或a ? 问题答案: 用途: 因此,您可以执行以下操作: 但是,如果用它们的对象包装定义了这些原语,则要小心(永远不要这样做,请尽可能使用文字): 数组的类型为still 。在这里,您确实需要操作员。 更新: 另一种有趣的方式是检查以下内容的输出: 这样,

  • 我正在尝试将另一个类的布尔变量调用到包含数组列表的类。下面方法的目的是将学生添加到团队中,如果学生不到一定年龄(例如18岁),他们将获得折扣。 以下是学生是否是大三学生的布尔结果代码: arraylist类包含一个方法sighUp(),该方法将学生添加到团队列表中。如果学生是大三学生,他们可以享受折扣: 我一直得到的错误是“isJunior”是一个找不到的变量。我试图从包含布尔变量的学生类中调用此

  • 我正在分析ASTNodes(org.eclipse.jdt.core.dom),并试图找到我拥有的变量节点(SimpleName)的VariableDeclaration。示例: 我还需要一个解决方案,可以找到声明,如果它是一个类字段。

  • 问题内容: 简而言之,问题 是 : 有没有一种方法可以防止Python在当前作用域之外查找变量? 细节: 如果在当前作用域中未定义变量定义,Python将在外部作用域中查找它们。因此,这样的代码在重构过程中如果不小心,很容易中断: 如果我重命名了函数参数,但忘了在函数体内重命名它们,代码仍将运行: 我知道从外部范围中隐藏名称是一种不好的做法。但是,无论如何都有一些原因: 有时使用相同的名称可能很有