执行存储过程通用方法

忙了两个月没写东西,今天就给大家分享点劳动成果。

来个执行存储过程通用方法 

        /// <summary>
        /// 执行存储过程,返回一个DataSet。
        /// </summary>
        /// <param name="procdure"></param>
        /// <param name="para"></param>
        /// <returns></returns>
        public DataSet ExeProcedure(string procdure, string[] para)
        {
            da = new SqlDataAdapter();
            comm = new SqlCommand(procdure, con.conn);
            comm.CommandType = CommandType.StoredProcedure;

            for (int i = 0; i < para.Length; i++)
            {
                string text = para[i].ToString();
                i++;
                string value = para[i].ToString();
                parameters = new SqlParameter(text, value);
                comm.Parameters.Add(parameters);
            }
            da.SelectCommand = comm;
            ds = new DataSet();
            try
            {
                da.Fill(ds);
            }
            catch (System.Exception ex)
            {
                CloseLink();
            }
           // CloseLink();
            return ds;
        }

数组里放存储过程中的变量和值,格式别错了如下:
            strPara[0] = "@BeginDate";
            strPara[1] = beginDT;
            strPara[2] = "@EndDate";
            strPara[3] = endDT;

Godror 是一个针对 Go 语言的 Oracle 数据库驱动程序,提供了多种方式执行存储过程。以下是其中一种通用方法: 1. 创建存储过程 ```sql CREATE OR REPLACE PROCEDURE example_proc ( p_input IN VARCHAR2, p_output OUT VARCHAR2 ) AS BEGIN p_output := 'Hello, ' || p_input; END; ``` 2. 使用 godror 执行存储过程 ```go package main import ( "context" "database/sql" "fmt" "gopkg.in/goracle.v2" ) func main() { // 连接数据库 dsn := "user/password@host:port/service_name" db, err := sql.Open("goracle", dsn) if err != nil { fmt.Println(err) return } defer db.Close() // 准备执行存储过程 ctx := context.Background() stmt, err := db.PrepareContext(ctx, "BEGIN example_proc(:1, :2); END;") if err != nil { fmt.Println(err) return } defer stmt.Close() // 设置输入和输出参数 input := "world" var output string outParam := sql.Out{Dest: &output} // 执行存储过程 _, err = stmt.ExecContext(ctx, input, outParam) if err != nil { fmt.Println(err) return } // 输出结果 fmt.Println(output) } ``` 在上面的示例中,使用 `sql.Open` 连接 Oracle 数据库,然后使用 `db.PrepareContext` 准备执行存储过程的 SQL 语句。在执行存储过程时,使用 `stmt.ExecContext` 方法,并将输入参数和输出参数传递给该方法。最后,将存储过程的输出结果保存到 `output` 变量中,然后输出结果。 需要注意的是,在 `stmt.ExecContext` 方法中,需要使用 `sql.Out` 类型的参数来表示存储过程的输出参数,这样才能正确地接收存储过程的输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值