服务端:PHP+postgreSQLfunction a(){
$l_sql="begin work;
declare test_cur scroll cursor with hold for select * from aa_file;
fetch first from test_cur; ";
$sql_conn->query($l_sql);//事先已封装好的方法,运行sql语句
}function b(){
$l_sql="fetch next from test_cur ";
$sql_conn->query($l_sql);
}
============================================
在a()中定义了一个游标test_cur,程序中调用a()执行时没有错误,能得到正确的数据,即能取得第一条记录并能正确返回.
可是在调用b()时(调用b之前程序先调用过a),却报错:Query failed: ERROR: cursor "test_cur" does not exist
疑问:
在postgresql中游标难道要在pl/pgsql中才能用?不能以此种方式定义和使用吗?如果不行,为何a()中的又能正确执行?
还是我哪里搞错了?
望知道的朋友指点一下。先谢了!
$l_sql="begin work;
declare test_cur scroll cursor with hold for select * from aa_file;
fetch first from test_cur; ";
$sql_conn->query($l_sql);//事先已封装好的方法,运行sql语句
}function b(){
$l_sql="fetch next from test_cur ";
$sql_conn->query($l_sql);
}
============================================
在a()中定义了一个游标test_cur,程序中调用a()执行时没有错误,能得到正确的数据,即能取得第一条记录并能正确返回.
可是在调用b()时(调用b之前程序先调用过a),却报错:Query failed: ERROR: cursor "test_cur" does not exist
疑问:
在postgresql中游标难道要在pl/pgsql中才能用?不能以此种方式定义和使用吗?如果不行,为何a()中的又能正确执行?
还是我哪里搞错了?
望知道的朋友指点一下。先谢了!
弄不明白,为什么一提交后,之前定义的游标就用不了呢?提交对服务器内存中的变量有影响?还是提交后之前定义的begin work的环境不存在了,还是此时与数据库的连接是断开的?如果不用pl/pgsql来处理,还有什么办法可以解决这个问题?
自己也是一知半解,说不到点上去,哪位朋友能说得明白点啊?