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();
                }
            }
  • 相关阅读:
    静态库介绍与简单演练及同名资源冲突解决(.a格式的静态库)
    获取在线APP的素材图片
    屏幕适配-预览工具的使用
    Mac本“安全性与隐私”里没有“任何来源”选项
    SVN(Cornerstone)-添加忽略文件
    应用间跳转
    清花瓷抓包手机配置
    生成iOSAPP的二维码
    iOS上架90034问题解决
    正则表达式
  • 原文地址:https://www.cnblogs.com/sunff/p/12966858.html
Copyright © 2011-2022 走看看