现在的位置: 首页 > 综合 > 正文

.net操作Oracle函数

2013年10月11日 ⁄ 综合 ⁄ 共 1788字 ⁄ 字号 评论关闭
.net访问Oracle函数,并显示返回值:

1 表结构(SysFunction)

功能编号    CHAR(8)           
功能名称    VARCHAR2(30)           
上级功能编号    CHAR(8)           
标志    CHAR(1)           

select * from infomanager.sysfunction

1    1           系统功能    0           0
2    2           客户中心    1           0
3    3           潜在客户    2           0
4    4           现在客户    2           1
5    5           历史客户    2           1
6    6           报表中心    1           1
7    7           总公司报表    6           1
8    8           中化工报表    7           1

2 创建函数:

CREATE OR REPLACE FUNCTION GET_SYSFUNCTION_NAME (
    func_id char
)
RETURN VARCHAR2
IS func_name VARCHAR2(25);
BEGIN
    SELECT 功能名称 INTO func_name FROM infomanager.sysfunction
    WHERE 功能编号 = func_id;
   
    RETURN func_name;
END GET_SYSFUNCTION_NAME;

3: asp.net下的测试代码。
 

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Data.OracleClient;

using HHSCInfor.App_Code.Database;

public partial class _Default : System.Web.UI.Page 
{
    
protected void Page_Load(object sender, EventArgs e)
    
{

        OracleConnection conn 
= new OracleConnection(System.Configuration.ConfigurationManager.AppSettings["DBConnStr"]);

        OracleCommand cmd 
= new OracleCommand();

        cmd.Connection 
= conn;

        cmd.CommandText 
= "GET_SYSFUNCTION_NAME";

        cmd.CommandType 
= CommandType.StoredProcedure;

        cmd.Parameters.Add(
"func_id", OracleType.NVarChar).Value = 1;

        cmd.Parameters.Add(
"func_name", OracleType.NVarChar, 25).Direction = ParameterDirection.ReturnValue;

        conn.Open();

        cmd.ExecuteNonQuery();

        conn.Close();

        Label1.Text 
= cmd.Parameters["func_name"].Value.ToString();
       
    }
   
     
}

页面显示:系统功能
测试通过:

注:ORA-01036: 非法的变量名/编号
错误原因可能是你使用的不是正确的CommandType类型。

抱歉!评论已关闭.