Ⅰ ORACLE 使用存储过程或者函数返回TYPE
C#调用oracle存储过程 最简单的实例
Oracle方面
1.创建Oracle过程存储
create or replace procere proce_test(paramin in varchar2,paramout out varchar2,paraminout in out varchar2)
as
varparam varchar2(28);
begin
varparam:=paramin;
paramout:=varparam|| paraminout;
end;
2.测试过程存储
declare
param_out varchar2(28);
param_inout varchar2(28);
begin
param_inout:='ff';
proce_test('dd',param_out,param_inout);
dbms_output.put_line(param_out);
end;
C#方面
引用Oracle组件
using System;
using System.Data;
using System.Data.OracleClient;
namespace WebApplication4
{
public class OraOprater
{
private OracleConnection conn=null;
private OracleCommand cmd=null;
public OraOprater()
{
string mConn="data source=ora9i.ora.com;user id=ora;password=ora"; //连接数据库
conn=new OracleConnection(mConn);
try
{
conn.Open();
cmd=new OracleCommand();
cmd.Connection=conn;
}
catch(Exception e)
{
throw e;
}
}
public string SpExeFor(string m_A,string m_B)
{
//存储过程的参数声明
OracleParameter[] parameters={
new OracleParameter("paramin",OracleType.VarChar,20),
new OracleParameter("paramout",OracleType.VarChar,20),
&
nbsp; new OracleParameter("paraminout",OracleType.VarChar,20)
};
parameters[0].Value=m_A;
parameters[2].Value=m_B;
parameters[0].Direction=ParameterDirection.Input;
parameters[1].Direction=ParameterDirection.Output;
parameters[2].Direction=ParameterDirection.InputOutput;
try
{
RunProcere("proce_test",parameters);
return parameters[1].Value.ToString();
}
catch(Exception e)
{
throw e;
}
}
private void RunProcere(string storedProcName,OracleParameter[] parameters)
{
cmd.CommandText=storedProcName;//声明存储过程名
cmd.CommandType=CommandType.StoredProcere;
foreach(OracleParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
cmd.ExecuteNonQuery();//执行存储过程
}
}
}
测试结果:ddff
Ⅱ oracle中的存储过程与函数
函数是有返回值的,存储过程没有。
在BODY中的话,一般函数都是SELECT语句,而存储过程是包括DML语句的。
Ⅲ oracle怎么导出function和procere,即函数和存储过程
使用oracle的一般都装了PL/sql吧,对象窗口,找到对应的函数或者存储过程,右键查看或编辑。
一般单个我是这么用,如果很多的话可以参考一下网上提供的方法:
oracle 导出一个用户下的所有存储过程
方法一:
set echo off ;
set heading off ;
set feedback off ;
spool d:\tmp.txt
select text from user_source ;
spool off;
方法二:
使用PL/SQL 菜单 Tools --> Export user objects... ,对弹出的dialog中选择user和output file,选中要导出的内容,点击export导出就行了
Ⅳ oracle函数和存储过程有什么区别
一、主体不同
1、函数:当需要分析数据清单中的数值是否符合特定条件时,使用数据库工作表函数。
2、存储过程:是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,一次编译后永久有效。
二、特点不同
1、函数:只能返回一个变量,可以嵌入sql中和存储过程中使用。
2、存储过程:用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。
三、功能不同
1、函数:不能用临时表,只能用表变量,函数不能执行一组修改全局数据库状态的操作。可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,所以在查询中位于from关键字后面。
2、存储过程:存储过程需要让sql的query可以执行,存储过程可以返回参数,如记录集。sql语句中不可以含有存储过程。
Ⅳ Oracle 存储过程和函数的区别
1. 返值区别,函数1返值,存储程通参数返,或者没
2.调用区别,函数查询语句直接调用,存储程必须单独调用.
函数般情况用计算并返计算结存储程般用完特定数据操作(比修改、插入数据库表或执行某些DDL语句等等)
Ⅵ oracle中定义存储过程和函数,到底有什么用
就是在后台代码访问数据库时,如果有个操作需要多条SQL语句才能实现,你说在后台代码中多次访问数据库的效率高还是直接调用那个函数或者存储过程效率高呢?
Ⅶ oracle 怎样查看已经存在的函数
①登录用户后,执行下面语句查看当前用户有哪些存储过程:
select name from user_source where type='PROCEDURE';
或者:select object_name from user_proceres;
或者:select object_name from user_objects where object_type='PROCEDURE' ;
②找到你所要查询的存储过程名字后,执行下面操作,可以看到存错过程内容:
select text from user_source where name ='xxxx';--(xxxx代表所要查询的存储过程名字)
Ⅷ oracle如何在函数中调用存储过程
函数中调用存储过程报错,多半是由于函数的执行用户,没有授权insert 权限。
Ⅸ oracle里 存储过程和存储函数 都能做简单查询吗
存储函数中建议别做,给以个例子给你
CREATE OR REPLACE PROCEDURE SELECTGROUP(P_ALLGROUP OUT SYS_REFCURSOR) IS
BEGIN
OPEN P_ALLGROUP FOR
SELECT S.GROUPID, S.GROUPNAME, S.GROUPBZ, COUNT(1) GROUPCOUNT
FROM AAA S, BBB A
WHERE S.GROUPID = A.GROUPID
GROUP BY S.GROUPID, S.GROUPNAME, S.GROUPBZ;
END SELECTALLGROUP;
Ⅹ oracle 怎么执行存储过程跟函数
调用oracle存储过程用begin...end的方式。
基本语法:
begin 存储过程名(参数1,参数2……);--如果无参数则省略括号及括号内部分end;
如,有存储过程:
create or replace procere p_testasv_begintime varchar2(20);v_endtime varchar2(20);v_str varchar2(10);begin v_begintime:=to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'); select 'badkano' into v_str from al; v_endtime:=to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'); dbms_output.put_line('开始时间为:'||v_begintime); dbms_output.put_line('结束时间为:'||v_endtime);end;
执行:begin p_test;end;