oracle存储过程笔试题
Ⅰ 请问几个oracle存储过程语法的问题
1、包中用is和as是同等的,因为在sql中只能用AS,而在PL/SQL中可以用is,因兼容问题,所以PL/SQL中也可以使用AS;
2、放在begin外面,值得注意的是PL/SQL是块状结构,所以变量都应该的申明部分定义,也就是begin外面;
3、在函数、过程、包的申明部分定义变量时,可以不用Declare,但使用匿名程序时,一定要使用Declare定义变量;
4、纯SQL语句是不用begin/end的。只有PL/SQL语句才使用。
Ⅱ oracle procere存储过程
OR REPLACE PROCEDURE 存储过程名字( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS/AS变量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 ROLLBACK; RAISE; END;3、IF判断
IF 条件1 THEN Do Someting ELSIF 条件2 THEN Do Someting ELSIF 条件3 THEN Do Someting ELSE Do SometingEND 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.列名2 END; END LOOP; END; 7、用pl/sql developer debug
连接数据库后建立一个Test Window
在窗口输入调用SP的代码,F9开始Debug,CTRL+N单步调试
注意事项:
1)存储过程参数不带取值范围,in表示传入,out表示输出;
2)变量可带取值范围,后面接分号;
3)在判断语句前最好先用count(*)函数判断是否存在该条操作记录
4)用select.into.给变量赋值
5)在代码中抛出异常用RAISE;通常的用法:
EXCEPTION WHEN OTHERS THEN ROLLBACK; RAISE;/*异常分很多类,如NO_DATA_FOUND。OTHERS处本应该写异常名称,如果不想把异常分得那么细,可以笼统一点用OTHERS来捕获,即所有异常均用OTHERS来捕获。WHEN OTHERS THEN 表示是其它异常。RAISE表示抛出异常,让User可以看到。*/
6)AS/IS的区别
在试图(VIEW)中只能用AS不能用IS
在游标(CURSOR)中只能用IS不能用AS
7)输出变量赋值有两种,一种是直接:=,还有一种就是SELECT INTO
8)显示调试信息
a.存储过程中在必要的位置添加
DBMS_OUTPUT.put_line(‘HI‘);
b.打开DBMS_OUTPUT
show serveroutput;set serveroutput on;
9)删除PROCEDURE
DROP PROCEDURE procere_name;
oracle procere存储过程
Ⅲ oracle数据库怎么创建存储过程
创建Oracle数据库中的存储过程是数据库编程的重要环节。在这个例子中,我们将创建一个简单的存储过程,该过程接受一个整数参数,并执行特定的操作。下面是如何使用Java语言创建这样一个存储过程的步骤。
首先,确保你已经配置好了Oracle数据库的驱动程序,并且能够成功连接到数据库。这里使用了`DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver())`来注册Oracle JDBC驱动程序。
接下来,通过`DriverManager.getConnection()`方法获取到数据库连接。这里使用了`jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL`作为连接字符串,具体的数据库连接信息需要根据实际情况进行修改。
然后,我们创建一个`CallableStatement`对象,它用于调用存储过程。在这个例子中,存储过程名为`pro1`,并且接受一个参数。`conn.call("{call pro1(?)}")`这行代码创建了一个`CallableStatement`对象,并指定了调用的存储过程名称。
接下来,我们给存储过程的参数设置值。这里使用`c.setInt(1, 188)`将第一个参数设置为188。注意,参数的索引从1开始。
最后,我们通过调用`c.execute()`执行存储过程。这行代码会触发存储过程的执行,并将结果返回给Java程序。在执行完毕后,记得关闭数据库连接以释放资源。
整个过程展示了如何使用Java语言连接到Oracle数据库,并调用存储过程。通过这种方式,可以实现对数据库的高级操作,提升程序的性能和功能性。
需要注意的是,存储过程的具体实现逻辑需要在数据库端进行编写。这里仅仅展示了如何通过Java代码来调用存储过程。
通过上述步骤,你可以成功创建并调用一个简单的Oracle存储过程。这对于数据库编程来说是一个重要的技能,可以帮助你更好地管理和操作数据库中的数据。
Ⅳ oracle的存储过程的调用和写法
在Oracle PL/SQL中,存储过程的调用与编写方法如下:
首先,在"测试"窗口中输入以下代码进行测试:
dbms.output.put_line(param)类似于JSP中的out.println(),用于在过程中查看错误信息,可以在过程中添加。
示例代码如下:
declare param varchar2(10); begin param :='week';--这是你的输入参数 proc_rpt_result(param); dbms_output.put_line(param);--这是过程处理打印结果 end;
这段代码展示了如何定义一个变量,设定输入参数,调用存储过程,并打印结果。
接下来,我们来看看游标的使用。游标是一种用于存储和处理查询结果的特殊变量。例如:
select xx from xxx 有多个返回值,可以将这些返回值存储到游标cursor中,然后通过open打开游标,逐个处理这些值。
你可以把游标看作是一个数组,select操作将查询结果存入游标,open操作则取出这些值进行处理。
下面是一个使用游标的示例代码:
declare cursor c1 is select * from emp; begin open c1; loop fetch c1 into :col1, :col2; exit when c1%notfound; dbms_output.put_line(col1 || ', ' || col2); end loop; close c1; end;
这段代码定义了一个游标,从emp表中获取数据,并逐行打印这些数据。
以上就是关于Oracle存储过程的调用和编写方法,以及如何使用游标处理查询结果的简单介绍。
Ⅳ oracle存储过程 游标和动态赋值问题
创建:
create or replace procere t_ts(ref_cur out sys_refcursor) AS
BEGIN
open ref_cur for SELECT leixing FROM diaobodan;
end t_ts;
调用:
declare
s_cur SYS_REFCURSOR;
v_leixing varchar2(100);
begin
t_ts(s_cur);
loop
fetch s_cur into vv_name;
exit when s_cur%notfound;
dbms_output.put_line(v_leixing);
end loop;
end;
是这个意思吗?