请教关于oracle中写存储过程时 select into 语句报错的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教关于oracle中写存储过程时 select into 语句报错的问题相关的知识,希望对你有一定的参考价值。

如果使用select into 语句取数据的话,假如没有符合条件的数据被取出,此时会报data not
found 错误,哪怎么样避免呢?通常的高效的做法是什么?是先使用select count(*)进行判断,还是通过使用类似于java里的异常或者类似的机制来解决呢?希望高手们指教,刚开始学习,

定义一个块,块中说明异常情况下如何处理就可以了。
begin
select 字段 into 变量...
exception
when NO_DATA_FOUND then --未找到时
处理逻辑
when exception_code then --这里的错误代码可以在standard包中找到
处理逻辑
when OTHERS then --default错误时
处理逻辑
end;
错误代码可通过如下语句获得:
select * from dba_source where owner='SYS' and name='STANDARD' and type='PACKAGE' and text like ' pragma EXCEPTION%';
参考技术A 最简单的语句:就是在你的字段加上max函数。如
select max(id)into var_id from tab where id=某一个值
呵呵,谁用谁明白。
参考技术B exception
when no_data_found then
--你的处理逻辑
参考技术C exception
when no_data_found then
null;

我在页面中写了两个select,想在第一个select内容改变时自动定义第二个select的option。 请教如何实现?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=" http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Form Select</title>
<script type="text/javascript">
function ChangeSelect(obj)
var n = obj.selectedIndex; //获取第一个列表中选中的项的序列
var val = obj.options[n].value; //获取第一个列表中选择的项的值
if(val==2) //如果选择的值是 2
document.myform.select2.options.length = 0; //初始化select2
for(i=0;i<4;i++) //给第三个select创建四个项
document.myform.select2.options[i] = new Option("选择项"+i,i+1); //Option() 的参数: 前一个是显示名,后一个是值


//你可以继续添加判断值,然后新重新初始化select2,再给select2进行项的添加操作

</script></head><body>
<form name="myform" id="myform" action="">
<select name="select1" onchange="ChangeSelect(this)">
<option value="1">选择列表一</option>
<option value="2">选择列表一</option>
<option value="3">选择列表一</option>
</select>
<select name="select2"></select>
</form>
</body>
</html>
参考技术A 使用css样式,定义select标签 .select option:要定义的属性

以上是关于请教关于oracle中写存储过程时 select into 语句报错的问题的主要内容,如果未能解决你的问题,请参考以下文章

关于oracle存储过程select into 未找到数据问题

Oracle 存储过程学习

我在页面中写了两个select,想在第一个select内容改变时自动定义第二个select的option。 请教如何实现?

oracle存储过程中写IF ELES

请教各位高手 oracle 存储过程 如何获得 捕获异常的内容

oracle 存储过程中 使用insert into Table (select) 进行数据批量添加 执行后无数据 但单独将上述insert