首先要知道:select .....into 语句只能够查询一个记录的信息。 如果没有查到任何数据,会产生NO_DATA_FOUND异常; 如果查询到多个记录,则会产生TOO_MANY_ROWS异常。在这里很明显 “ORA-01422 实际返回的行数超出请求的行数”就是第二种情况,查询到多个记录,所以就会报错,如果必须最后...
问题:在编写存储过程,执行的时候一直报这个错误,
ORA
-
01422
,应该是单行查询
返回
多个行。
解决方案:首先分析数据,有没有可能出现单行查询
返回
多个行的情况,对比了老半天,怎么看数据都不可能查出多行记录。最后百度了一下,发现可能是自己定义参数名称和表中的字段名称相同导致参数未传进去,进行了全表查询,所以查出了多条记录。最后修改自己定义的参数名称,问题解决。
备注:以后遇到这种问题,还是要早点...
在
ORACLE
的存储过程 或是触发器中使用类似
select t.ajay into aytemp from t_xyr_collect t where t.c_ahpx like '%'||xyrbh||'%' ;
的语句时,可能会出现
ORA
-
01422
:
实际
返回
的
行数
超出
请求
的
行数
的错误
解决办法:在条件后加上 and rownum=1
selec...
ORA
-27104: system-defined limits for shared memory was misconfigured –
oracle
的sga超过安装
oracle
配置的最大内存
ipcs -l
—— Messages Limits ——–
max queues system wide = 32768
max size of message (bytes) = 8192
default max size of queue (bytes) = 16384
—— Shared Memory Limits ——–
max number of segments = 4096
max s
但是在客户端不可以,服务启动时
报错
:
java.sql.SQLException: null, message from server: “Host ‘223.72.41.7’ is not allowed to connect to this MySQL server”
客户端访问时
报错
:
解决方法:
1,登陆服务器
mysql> use mysql; //用mysql database
2,查询user表如下:
3,mysql> update user set host=’%’ where u
Oracle
不像SQLServer那样在存储过程中用Select就可以
返回
结果集,而是通过Out型的参数进行结果集
返回
的。
实际
上是利用REF CURSOR 代码如下: –procedure
返回
记录集: ———————-声明一个Package————– CREATE OR REPLACE PACKAGE pkg_test AS TYPEmyrctypeIS REF CURSOR; PROCEDURE get_r(p_id NUMBER,p_rc OUT myrctype); –Package中声明名为get 的Procedure(只有接口没内容) END pkg_test; —————–声明P
CSDN-Ada助手: