请问大吓,我想用存储过程查一个表该如果写这样的一个存储过程呢,谢谢!(这是很简单的动作,但我老是出错)^@^
解决方案 »
- 怎么在SQLplus下导出建表脚本?
- 这SQL改如何写才好!帮帮我...大侠们!
- system用户不能登陆,怎么办啊?
- 懂得Oracle的进来一下咯~~这里出来了个问题呀~~
- 如何让"select id 编号 from test"这条SQL语句里的别名"编号"中间可以有空格?
- 请问,在sqlplus中执行.sql的脚本文件,到库中的中文都是乱码,怎么办,急!谢谢,在线
- 请问哪有oracle下载?
- SOS,我写的过程怎么在sqlplus里call时,出错为invalid呢?studioDBA里状态也为invalid,为呀?
- 谁能给我解释:mts,ops的用途及如何使用?
- 为什么本地能查到数据,远程登录查不到?
- 怎样查看表中的记录
- 求一个对表中记录分组的存储过程
PL/SQL 代码:
CREATE OR REPLACE PACKAGE "PKG_TEST" AS
TYPE myrcType IS REF CURSOR;
FUNCTION get(strSQL VARCHAR) RETURN myrcType;
END pkg_test;CREATE OR REPLACE PACKAGE BODY "PKG_TEST" AS
FUNCTION get(strSQL IN VARCHAR) RETURN myrcType IS
rc myrcType;
BEGIN
OPEN rc FOR strSQL;
RETURN rc;
END get;
END pkg_test;
自己试验一下吧。
/*“OR REPLACE”自动删除已经存在的同名存储过程,“IN”输入参数,“OUT”输出参数*/
phoneNum VARCHAR(15);
BEGIN
IF (substr(inPhone,1,2)<>'86') THEN
phoneNum:='86' || inPhone;
ELSE
phoneNum:=inPhone;
END IF; SELECT city_name
INTO cityName
FROM tb_phone_no
WHERE phone_no=substr(phoneNum,3,7);
EXCEPTION
WHEN no_data_found THEN /*未找到记录时的异常处理*/
DBMS_OUTPUT.PUT_LINE('INPUT: ' || inPhone || '. No data found for SELECT .. INTO!');
WHEN too_many_rows THEN /*查询到多条记录时的异常处理*/
DBMS_OUTPUT.PUT_LINE('Too many rows found for SELECT .. INTO!');
END prc_selTest;/*使用PL/SQL语句调用存储过程*/
DECLARE
strValue VARCHAR(20) := '999';
BEGIN
prc_selTest('8613301230001',strValue);
DBMS_OUTPUT.PUT_LINE('cityName:' || strValue);
END;