当前位置:首页 » 存储配置 » oracle存储过程练习

oracle存储过程练习

发布时间: 2022-11-15 22:28:36

1. oracle 存储过程 求大神们帮帮忙

正文部分:
CREATE PROCEDURE sp_exec_35to41
@database varchar(60),@bzvarchar(5)
---创建存储过程 带2个参数

AS
begin
declare
@sqlstring varchar(2000)
--- 定义变量@sqlstring

alter table Acct_t_AcctItem disabletrigger all
---修改表 Acct_t_AcctItem 停止所有触发器

delete from Acct_t_AcctItem
---删除表 Acct_t_AcctItem 内容

set @sqlstring = 'insert into Acct_t_AcctItem SELECT AcctCode,AcctName,BalanceDir,Memoric,AuxDept,AuxEnterprise,AuxPerson,
AuxProject,EndFlag,AcctTypeID,Status,Breviary,TaxTypeID,AcctLvlID,SuperID,null,EndFlag,EndFlag,EndFlag,EndFlag
from ' + @database + '.dbo.Acct_t_AcctItem '
---设置字段@sqlstring的内容,内容是从定义的数据库:变量@database的表dbo.Acct_t_AcctItem复制列AcctCode,AcctName,BalanceDir,Memoric,AuxDept,AuxEnterprise,AuxPerson,
AuxProject,EndFlag,AcctTypeID,Status,Breviary,TaxTypeID,AcctLvlID,SuperID,null,EndFlag,EndFlag,EndFlag,EndFlag到表Acct_t_AcctItem

exec(@sqlstring)
---执行语句

alter table Acct_t_AcctItem enabletrigger all
---修改表 Acct_t_AcctItem 启动所有触发器

return
end

---这个存储过程的意思是把表Acct_t_AcctItem内容清除,再从指定数据库的表Acct_t_AcctItem复制内容到Acct_t_AcctItem,数据库名称由执行存储过程的时候指定,sp_exec_35to41@database varchar(60)---数据库名称,@bzvarchar(5)---没有用

2. ORACLE 存储过程问题

使用包返回存储过程结果集,例子:

create or replace package pkg_return_table
is
type c1 is ref
cursor;
procere p_return_table(v_c1 out c1); --定义存储过程返回一个结果集

function f_return_table return pkg_return_table.c1; --定义函数返回一个结果集
procere
p_return_table1(v_id int,v_c1 out c1,v_c2 out c1);
--定义存储过程返回多个结果集
end;
/

create or replace package body pkg_return_table
is
procere
p_return_table(v_c1 out c1)
is
begin
open v_c1 for select * from
student;
end p_return_table;
function f_return_table return
pkg_return_table.c1
is
v_c1 pkg_return_table.c1;
begin

open v_c1 for select * from student;
return v_c1;
end
f_return_table;
procere p_return_table1(v_id int,v_c1 out c1,v_c2 out
c1)
is
sqlstr varchar2(500);
begin
sqlstr:='select * from
student';
open v_c1 for sqlstr; --使用动态sql
sqlstr:='select * from
student where id=:w_id';
open v_c2 for sqlstr using v_id; --动态sql传参

end p_return_table1;
end pkg_return_table;
/

--存储过程调用
variable v_c1 REFCURSOR;
exec
pkg_return_table.p_return_table(:v_c1);
print v_c1;

--存储过程调用
variable v_c1 REFCURSOR;
variable
v_c2 REFCURSOR;
exec
pkg_return_table.p_return_table1(1,:v_c1,:v_c2);
print v_c1;
print
v_c2;

--函数调用
select pkg_return_table.f_return_table()
from al;

重点是定义游标变量,获取存储过程结果集,然后Open游标,就跟平常的游标一样的操作啦
不用包应该也可以的,定义REFCURSOR变量即可
希望能解决您的问题。

3. ORACLE的存储过程问题

在网上搜了某帅哥的解决方案,希望对你有用!你的这个错误,我也没遇到过,也学习下!
ORA-29282 UTL_FILE不能用,File handle does not exist.可如下操作:
1.创建directory(电脑相应的路径一定要存在,并且注意要用大写来创建,它会区分大小写)
如:create directory utl_file_dir as 'd:\temp\utl_file';
2.授予权限
如:grant read,write on directory utl_file_dir to 用户;
3.可查看是否生成:
如: select * from all_directories;
4.如对所设的directory不满意,可对其进行取消,
如: drop directory utl_file_dir;

4. Oracle 定义存储过程 不能执行,处于无效状态。

无效状态有两种可能,一种是你的存储过程编辑没有成功,创建了,但里面有语法错误。
还有一种是存储过程使用的表有结构上的改变,需要重新编译一下。
你重新编译一下,如果不成功,就是有语法问题,你需要修改存储过程。

5. 如何oracle调试存储过程

1.打开PL/SQL Developer 如果在机器上安装了PL/SQL Developer的话,打开PL/SQL Developer界面 输入用户名,密码和host名字,这个跟在程序中web.config中配置的完全相同,点击确定 找到需要调试的存储过程所在的包(Package bodies),如PACK_ACTIVITY,点击右键,在弹出菜单中选择[查看],得到包中的所有存储过程和他们的代码. 2.添加debug信息 为了能够单步跟踪存储过程,需要为其所在的包添加debug信息,右键点击需要调试的包,在弹出菜单中选中[添加调试信息]. 这样就为包体添加了调试信息。 3.调试存储过程 现在所有的准备工作都做好了,可以调试跟踪存储过程了。 选择需要调试的存储过程,点击右键,在弹出菜单中选择[测试],进去测试窗口. 测试窗口中有为了测试该存储过程自动所产生的代码,当然你也可以自己另外加入和修改代码,对于我们目前只是为了调试存储过程,自动生成的代码已经足够了。接着按照如下的步骤进行调试。 (1)添加存储过程所需要的参数,我们项目中的大多数存储过程都是需要参数的,参数可以在测试窗口右下部分输入。 如:GetPanNO_New需要一个输入参数v_employeeid,我们输入180,输出参数是mycursor,是查看结果的,不需要输入任何值。 (2)开始调试,点击[调试]菜单-[开始](或者按F9),就进去调试模式了,程序开始停在begin这一行. (3)以后的调试过程跟我们熟悉的的调试过程就一样了: 运行(Ctrl+R) 单步进入(Ctrl+N) 单步跳过(Ctrl+O) 单步退出(Ctrl+T) 或者点击debug工具条上的按扭: 当按Ctrl+N进去存储过程的源代码中后 在这个窗口中可以查看过程中的变量值和堆栈。 (4)调试运行完了后,可以查看结果如下(点击mycursor变量旁边的按钮).

6. Oracle数据库的存储过程怎么写

1 CREATE OR REPLACE PROCEDURE 存储过程名
2 IS
3 BEGIN
4 NULL;
5 END;

行1:
CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它;
行2:
IS关键词表明后面将跟随一个PL/SQL体。
行3:
BEGIN关键词表明PL/SQL体的开始。
行4:
NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句;
行5:
END关键词表明PL/SQL体的结束.
存储过程创建语法:
create or replace procere 存储过程名(param1 in type,param2 out type)
as
变量1 类型(值范围); --vs_msgVARCHAR2(4000);
变量2 类型(值范围);
Begin
Select count(*) into 变量1 from 表A where列名=param1;

If (判断条件) then
Select 列名 into 变量2 from 表A where列名=param1;
Dbms_output。Put_line(‘打印信息’);
Elsif (判断条件) then
Dbms_output。Put_line(‘打印信息’);
Else
Raise 异常名(NO_DATA_FOUND);
End if;
Exception
When others then
Rollback;
End;

7. oracle存储过程如何输出信息

可用DBMS_OUTPUT.PUT_LINE()对存储过程的进行输出。

编写存储过程:

create or replace procere test_pro(in_num number)

as

M number;

begin

M := in_num;

if 0 < M then

dbms_output.put_line('输出SQL语句1');

elsif M < 3 then

dbms_output.put_line('输出SQL语句2');

else

dbms_output.put_line('nothing');

end if;

end;

(7)oracle存储过程练习扩展阅读;

存储在数据库的数据字典中,存储在当前的应用中安全性由数据库提供安全保证,必须通过授权才能使用存储子程序,安全性靠应用程序来保证,如果能执行应用程序,就能执行该子程序。模式描述IN参数用来从调用环境中向存储过程传递值,不能给IN参数赋值,给此参数传递的值可以是常量、有值的变量、表达式等。

8. 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.列名2
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单步调试

9. 用 Oracle 存储过程编写一个简单的程序,要求

Oracle存储过程开发的要点是:
• 使用Notepad文本编辑器,用Oracle PL/SQL编程语言写一个存储过程;
• 在Oracle数据库中创建一个存储过程;
• 在Oracle数据库中使用SQL*Plus工具运行存储过程;
• 在Oracle数据库中修改存储过程;
• 通过编译错误调试存储过程;
• 删除存储过程;
二.环境配置
包括以下内容:
• 一个文本编辑器Notepad;
• Oracle SQL*Plus工具,提交Oracle SQL和PL/SQL 语句到Oracle database。
• Oracle 10g express数据库,它是免费使用的版本;

热点内容
魅族存储盘 发布:2025-07-17 07:36:39 浏览:728
编译和运行java的命令 发布:2025-07-17 07:32:54 浏览:608
全军出击文件夹 发布:2025-07-17 07:28:33 浏览:553
安全解压缩 发布:2025-07-17 07:13:44 浏览:18
脚本格式器 发布:2025-07-17 07:13:43 浏览:925
用苹果机和安卓机哪个划算 发布:2025-07-17 07:02:22 浏览:877
访问公园 发布:2025-07-17 06:55:28 浏览:814
苹果怎么玩安卓王者 发布:2025-07-17 06:45:48 浏览:954
安卓机淘宝下载的东西在哪里 发布:2025-07-17 06:44:22 浏览:135
oracle生成sql语句 发布:2025-07-17 06:17:34 浏览:910