获取数据失败!错误信息:SQL statement doesn't return rows 7
p_inp_no med_pat_master_index.inp_no%type;
p_patient_id V_NIS_OPERATION_EVENT.patient_id%type;
p_VISIT_ID V_NIS_OPERATION_EVENT.VISIT_ID%type;
p_OPER_ID V_NIS_OPERATION_EVENT.OPER_ID%type;
p_EVENTS_ID V_NIS_OPERATION_EVENT.EVENTS_ID%type;
p_EVENTS_NAME V_NIS_OPERATION_EVENT.EVENTS_NAME%type;
p_EVENTS_TIME V_NIS_OPERATION_EVENT.EVENTS_TIME%type;
p_EVENTS_TYPE V_NIS_OPERATION_EVENT.EVENTS_TYPE%type;
p_ADMINISTRATION V_NIS_OPERATION_EVENT.ADMINISTRATION%type;
cursor events_cursor is
select b.inp_no,
a.visit_id,
a.oper_id,
a.EVENTS_ID,
a.EVENTS_NAME,
a.EVENTS_TIME,
a.EVENTS_TYPE,
a.ADMINISTRATION
from medcomm.V_NIS_OPERATION_EVENT a
inner join med_pat_master_index b on a.patient_id=b.patient_id
where a.patient_id=p_patient_id;
begin
p_patient_id :=:patient_id;
open events_cursor;
loop
fetch events_cursor into p_inp_no,p_VISIT_ID,p_OPER_ID,p_EVENTS_ID,p_EVENTS_NAME,p_EVENTS_TIME,p_EVENTS_TYPE,p_ADMINISTRATION;
exit when events_cursor%found;
dbms_output.put_line(p_inp_no,p_patient_id,p_VISIT_ID,p_OPER_ID,p_EVENTS_ID,p_EVENTS_NAME,p_EVENTS_TIME,p_EVENTS_TYPE,p_ADMINISTRATION);
end loop;
close events_cursor;
end; 展开
应该是错误输入了全角字符,输入半角字符就行了。
错误信息ORA-00911: invalid character说明了在执行的SQL语句中出现了无效字符,所在SQL语句无法通过语法分析过程导致了错误结果。
可能出现的原因有:错误地输入了全角字符,比如输入了全角逗号。
如果使用C++、Java、C#等编程时,总会习惯在语句最后加分号,而这个符号在SQL中是无效字符。
实际语句和列类型不匹配,比如将数值列赋值为字符串。
与display函数不同,display_cursor显示的为真实的执行计划。
对于format参数,使用与display函数的各个值,同样适用于display_cursor函数。
当statistics_level为all或使用gather_plan_statistics提示可以获得执行时的统计信息。
根据真实与预估的统计信息可以初步判断SQL效率低下的原因,如统计信息的准确性、主要的开销位于那些步骤等。
查询oracle server端的字符集:SQL>select userenv(‘language’) from dual。
查询oracle client端的字符集。在windows平台下,就是注册表里面相应OracleHome的NLS_LANG。
还可以在dos窗口里面自己设置,比如: set nls_lang=AMERICAN_AMERICA.ZHS16GBK。