当前位置:首页>开发>正文

oracle带输入参数的存储过程 oracle 数据库存储过程怎么用传入参数作为查询条件

2024-01-10 10:29:21 互联网 未知 开发

 oracle带输入参数的存储过程 oracle 数据库存储过程怎么用传入参数作为查询条件

oracle带输入参数的存储过程

create or replace procedure sp_test(iv_y in varchar2,iv_m in varchar2)
as 
v_count integer
begin
    select count(*) into v_count from table_test where year=iv_y and month=iv_m
    if v_count >0 then
         Raise_Application_Error(-20001,数据已存在!)
     else
         insert into table_test values (iv_y,iv_m)
         commit
    end if  
end

oracle 数据库存储过程怎么用传入参数作为查询条件

一、在oracle中定义一个数组类型(TYPE)
代码如下:
createorreplacetype msg_array astableofnumber
意思是创建一个名称为msg_array,存放类型为整型的数组类型
二、在oracle中定义一个存储过程
代码如下:
createorreplaceprocedure modifyage(m_array in msg_array)
as
begin
for i in1..m_array.count loop
update users set age=age 1where id=m_array(i)
endloop
commit
exception
whenothersthen
rollback
end modifyage
创建一个存储过程,传入的参数是上面定义的msg_array类型,操作内容为循环传入的数组,对表的age字段做加1操作。

oracle数据库存储过程实例

创建存储过程的语句如下:
CREATE[OR REPLACE] PROCEDURE<过程名>
<参数1>,「方式l]<数据类型1>,
<参数2>,[ 方式2]<数据类型2>,
……)
IS|AS (is或as完全等价)
BEGIN
PL/SQL过程体
END<过程名>

例如,下面是一个删除表的存储过程:

--参数:tableName 要删除的表名
create or replace procedure del_table(tableName varchar2) as
--定义变量
sql_del_table long
begin
--构造sql语句
sql_del_table := drop table || tableName
--执行
EXECUTE IMMEDIATE sql_del_table

end del_table

Oracle 的存储过程怎么写。?

oracle 存储过程的基本语法
1.基本结构
CREATE OR REPLACE PROCEDURE 存储过程名字
(
参数1 IN NUMBER,
参数2 IN NUMBER
) IS
变量1 INTEGER :=0
变量2 DATE
BEGIN

END 存储过程名字

2.SELECT INTO STATEMENT
将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条
记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)
例子:
BEGIN
SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx
EXCEPTION
WHEN NO_DATA_FOUND THEN
xxxx
END
...

3.IF 判断
IF V_TEST=1 THEN
BEGIN
do something
END
END IF

4.while 循环
WHILE V_TEST=1 LOOP
BEGIN
XXXX
END
END LOOP

5.变量赋值
V_TEST := 123

6.用for in 使用cursor
...
IS
CURSOR cur IS SELECT * FROM xxx
BEGIN
FOR cur_result in cur LOOP
BEGIN
V_SUM :=cur_result.列名1 cur_result.列名 END
END LOOP
END

7.带参数的cursor
CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID
OPEN C_USER(变量值)
LOOP
FETCH C_USER INTO V_NAME
EXIT FETCH C_USER%NOTFOUND
do something
END LOOP
CLOSE C_USER

8.用pl/sql developer debug
连接数据库后建立一个Test WINDOW
在窗口输入调用SP的代码,F9开始debug,CTRL N单步调试

最新文章