zoukankan      html  css  js  c++  java
  • C#带返回参数的存储过程用法

    在开发过程中遇到这样的问题,需要调用存储过程并返回参数,大体就是用ADO调存储过程

    下面是存储过程的代码,这里是带事务的

    USE []
    GO
    
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE PROCEDURE [dbo].[PRO_Price_TBCSJG_NEW] ( @__SKUCount INT OUTPUT)
    AS
        BEGIN TRANSACTION GetDataSet
        --创建临时表,这些请忽略
        CREATE TABLE #TempPrice_Sale (
           Price_SaleOID uniqueidentifier NOT NULL ,
           SalePrice NUMERIC(18,2) NULL,
           IsEffect BIT NULL,
           Product_SKU_FK uniqueidentifier NOT NULL ,
           UCML_Organize_FK uniqueidentifier NOT NULL 
        )
        IF @@ERROR <> 0
                GOTO ErrorHandler
        DECLARE @sqlSale AS varchar(4000)
        SET @sqlSale =''
        EXEC (@sqlSale)
        IF @@ERROR <> 0
            GOTO ErrorHandler
    
        INSERT INTO dbo.Price_Sale
        SELECT * FROM #TempPrice_Sale
    
        IF @@ERROR <> 0
            GOTO ErrorHandler
    --也就这一步赋值,以上不用管
        SELECT @__SKUCount=1
        
        IF @@ERROR <> 0
            GOTO ErrorHandler
    
        
        DROP TABLE #TempPrice_Purchase
        
        COMMIT TRANSACTION GetDataSet
        RETURN 0
    
    ErrorHandler:
    ROLLBACK TRANSACTION GetDataSet
    RETURN @@ERROR
    
    GO

    调用的部分有两种方法

    第一种,这种是通过自己写sql执行,感觉相比较于第二种更灵活点吧

                string SqlConn = "Enlist=false;Data Source=;Database=;User Id=sa;Password=;";
                using (SqlConnection conn = new SqlConnection(SqlConn))
                {
                    SqlCommand cmd = new SqlCommand("EXECUTE dbo.PRO_Price_TBCSJG_NEW @__SKUCount OUTPUT", conn);
                    conn.Open();
    
                    SqlParameter para= new SqlParameter() { ParameterName = "@__SKUCount", DbType = DbType.String, Size = 500 };
                    para.Direction = ParameterDirection.Output;
                    cmd.Parameters.AddRange(new SqlParameter[]{ GetParamOut(out para, "@__SKUCount") });
                    cmd.ExecuteNonQuery();
    
                    Console.WriteLine(para.Value.ToString());
                    Console.ReadKey();
                }

    第二种

            static void Main(string[] args)
            {
                string SqlConn = "";
                using (SqlConnection conn = new SqlConnection(SqlConn))
                {
                    SqlCommand sqlCommand = new SqlCommand("PRO_Price_TBCSJG_NEW", conn);
                    sqlCommand.CommandType = CommandType.StoredProcedure;
                    conn.Open();
                    sqlCommand.Parameters["@__CustomerCount"].Direction = ParameterDirection.InputOutput;
    
                    SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
                    if (sqlCommand.Parameters["@__CustomerCount"].Value != DBNull.Value)
                    {
                        Console.WriteLine($"{sqlCommand.Parameters["@__CustomerCount"].Value}");
                    }
                    Console.ReadKey();
                }
            }
  • 相关阅读:
    Ubuntu16.04编译Android6.0/cm13.0教程及相关错误解决办法
    TWRP基于omnirom 6.0.1编译教程
    教你一招:解决Win 10安装软件时提示:文件系统错误 (-1073740940)
    红米3 TWRP-3.0.2(android_6.0.1_r72分支)中文版Recovery更新于20161018
    C# Note32: 查漏补缺
    postgreSQL使用杂谈
    Granfana+PostgreSQL
    WIndows下使用Grafana+InfluxDB打造监控系统
    【译】历史上的名人如何利用不同的思维方式成就自己
    【译】Focused and Diffuse Modes(专注与发散模式)
  • 原文地址:https://www.cnblogs.com/sunff/p/12966858.html
Copyright © 2011-2022 走看看