java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误 ORA-01003: 语句未进行语法分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误 ORA-01003: 语句未进行语法分析相关的知识,希望对你有一定的参考价值。

(1).sql:='select * from users ';
open p_cursor for vSQLInfo ;这样对
(2)。如果sql 是动态赋值的 然后就报错 java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01003: 语句未进行语法分析
并且 sql语句是正确的,在pl/Sql执行是对的
open curInfo for
select kechengId,kechengName from zw_category m where m.f_score >0;
LOOP
Fetch curInfo Into kechengId,kechengName;
Exit When curInfo %NOTFOUND ;
vSQLInfo := vSQLInfo || ' , Sum(Case When a.kechengid=''' || kechengId || ''' Then 1 Else 0 End) As ' || kechengName;
End Loop ;
(1)vSQLInfo1 := vSQLInfo1 || ' Create or replace VIEW VIEW_TEMP6 as select userName as 用户名,';
vSQLInfo1 := vSQLInfo1 || ' count(userName) as 总计 ';
vSQLInfo1 := vSQLInfo1 || vSQLInfo;
vSQLInfo1 := vSQLInfo1 || ' from users_kecheng a group by userid';
(2)execute immediate vSQLInfo1 ; 此处报错已关闭 cursor
vSQLInfo2 := ' select * from VIEW_TEMP6'; 如果我把第(1),(2)注释回报错递归 SQL 级别 1 出现错误 ORA-01003
open p_cursor for vSQLInfo2;
前提是生成的sql语句在pl/Sql可以执行

ORA-00604: 递归某个SQL 层时出现错误
- initSID.ora中,参数DC_FREE_EXTENTS或ROW_CACHE_ENQUEUES太低。可以根据操作系统和数据库的情况,适当增加这两个参数的值,宕下并重新启动ORACLE.
- 运行超出空间(伴随ORA-1547错误)。这时,要对表空间添加新文件,即增加表空间的大小。
- 达到了MAX_EXTENTS(伴随ORA-1556错误)。如果这样,就要修改表,允许更多的扩展。请从技术手册中查找MAX_EXTENTS的最大值。如果已经达到了最大值,必须用compress extents选项,把表卸出(export),再导入(import)数据库中。追问

在 ORACLE 动态赋值到一个参数里,然后重组sql语句,并且 组成后付给了了一个字符串
temp varchar2(4000),此时如果输出后,然后执行 open p_cursor for select * from users;
此时输出的语句在pl/SQL中执行是正确的
但是我如果执行 open p_cursr for temp 就会报上错
这样的话 我不应该是 递归sql出错呀

参考技术A ORA-00604是递归某个SQL 层时出现错误。
- initSID.ora中,参数DC_FREE_EXTENTS或ROW_CACHE_ENQUEUES太低。可以根据操作系统和数据库的情况,适当增加这两个参数的值,宕下并重新启动ORACLE.追问

在 ORACLE 动态赋值到一个参数里,然后重组sql语句,并且 组成后付给了了一个字符串
temp varchar2(4000),此时如果输出该temp后,然后执行open p_cursor for select * from users;
此时输出的语句在pl/SQL中执行是正确的
但是我如果执行 open p_cursr for temp 就会报上错
这样的话 我不应该是 递归sql出错呀

参考技术B 没代码,说不清楚……
你可以把你需要的写成一个存储过程……
然后用java直接调存储过程……妥妥的不会爆了吧
估计是和java的preparedStatement的机制有关系吧。
参考技术C 但是在JAVA里面你怎么动态给值呢 代码啥样的?

2016 - 1- 22 NSURLConnetction --- GET请求

---恢复内容开始---

一: 给服务器发送一个简单的GET请求

1.同步

    //  发送一个GET请求给服务器
    
    // 0.请求路径
    NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login?username=122&pwd=1222"];
    
    //1.通过路径创建请求对象
    NSURLRequest *request = [NSURLRequest requestWithURL:url];// 默认已经包含请求头了。
    
    
    // 2. 发送请求
      // 这个方法是个阻塞式的方法。
    NSDate *data =  [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    // 将data解析成字符串
    
     NSString *str= [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"----------- data%@",str);
    
}

 

  2.异步请求

 

    //  发送一个异步的GET请求给服务器
    
    // 0.请求路径
    NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login?username=122&pwd=1222"];
    
    //1.通过路径创建请求对象
    NSURLRequest *request = [NSURLRequest requestWithURL:url];// 默认已经包含请求头了。
    
    // 2.创建一个线程去发送请求。
    
    [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {// 当请求在新的线程中发送并返回了数据data后会来到这个block

        NSString *str= [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"----------- data%@",str);
        NSLog(@"%@",[NSThread currentThread]);
        
    }];
    
    NSLog(@"------end---");

打印结果:技术分享

可以发现返回数据后,Block执行在线程3,而线程2是因为请求是异步的,去执行请求了。

 

 

 

 

---恢复内容结束---

以上是关于java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误 ORA-01003: 语句未进行语法分析的主要内容,如果未能解决你的问题,请参考以下文章

Python 操作Redis

python爬虫入门----- 阿里巴巴供应商爬虫

Python词典设置默认值小技巧

《python学习手册(第4版)》pdf

Django settings.py 的media路径设置

Python中的赋值,浅拷贝和深拷贝的区别