标签: output-parameter

检索实体框架中的存储过程输出参数始终为空

C# 代码

public List<searchProducts_Result> GetProducts()
{
            var nameParam = new ObjectParameter("numbers", typeof(int));
            List<searchProducts_Result> listobjs = new List<searchProducts_Result>();
            ObjectResult<searchProducts_Result> objResult = null;
            searchProducts_Result outParam = new searchProducts_Result();
            using (var db = new SPWebEntities())
            {
                objResult = db.searchProducts("asd", 2, 5, "15", nameParam);
                if (nameParam.Value != null)
                    outParam.UserID = nameParam.Value.ToString();
                else
                    outParam.UserID = "0";
               listobjs.Add(outParam);
                foreach (searchProducts_Result sr in objResult)
                {
                    listobjs.Add(sr);
                }
            }

            return listobjs;
}
Run Code Online (Sandbox Code Playgroud)

我的存储过程:

[searchProducts]
    @productName varchar(50),
    @pageStart int=2,
    @pageEnd int=4,
    @result varchar(MAX),
    @numbers int output
as
   select @numbers …
Run Code Online (Sandbox Code Playgroud)

c# stored-procedures entity-framework output-parameter entity-framework-4

2
推荐指数
1
解决办法
2265
查看次数

ADODB 是否在带有可选输入参数的输出参数上失败?

我在 SQL Server 2008 R2 数据库中有一个存储过程,它有一个可选的输入参数和一个输出参数,如下所示:

CREATE PROCEDURE [dbo].[spCreateTicket]
(
    @TrackingCode varchar(25),
    @EmailAddress varchar(250) = null,
    @Ticket varchar(1000),
    @UserID int,
    @TicketID int output
)
AS
    SET NOCOUNT ON

    INSERT INTO dbTicket (TrackingCode, EmailAddress, Ticket, UserID)
        SELECT 
            @TrackingCode, @EmailAddress, @Ticket, @UserID

    SELECT @TicketID = SCOPE_IDENTITY()

    RETURN @TicketID
Run Code Online (Sandbox Code Playgroud)

当我在 SSMS 中调用没有可选参数的存储过程时,它工作正常:

DECLARE @TicketID int

EXEC [dbo].[spCreateTicket]
    @TrackingCode = 'xOCDUv289u403k5h24s5869vK',
    @Ticket = 'Something broke!',
    @UserID = 64307,
    @TicketID = @TicketID OUTPUT
Run Code Online (Sandbox Code Playgroud)

但是当我在 ASP 经典中通过 ADODB 尝试同样的事情时:

SET cmd = Server.CreateObject ("ADODB.Command")
cmd.ActiveConnection = …
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures adodb asp-classic output-parameter

2
推荐指数
1
解决办法
635
查看次数

带有 ResultSet 和 OutPut 参数的 Spring JDBCTemplate 存储过程

我创建了一个存储过程,它返回结果行和两个输出参数。我无法找到任何春从事情,我可以得到ResultSetoutPutParameters。我想实现像 这样使用Spring框架。

spring resultset jdbctemplate output-parameter java-stored-procedures

2
推荐指数
1
解决办法
2万
查看次数

使用C#中的输出参数和结果集读取SP?

我创建了一个类似于这个简化示例的存储过程:

CREATE PROCEDURE dbo.sp_MyStoredProcedure
    @Var1 INT OUTPUT,
    @Var2 DECIMAL(10,2) OUTPUT
AS
BEGIN
    SET NOCOUNT ON;

    SELECT
        @Var1 = COUNT(*),
        @Var2 = SUM(TranAmount)
    FROM
        MyTable

    SELECT * FROM MyTable
END
Run Code Online (Sandbox Code Playgroud)

当我在调用对象的ExecuteReader()方法后尝试从输出变量中读取值时SqlCommand,值为null.

string MyConnString = string.Empty;
SqlConnection MyConn = new SqlConnection(MyConnString);
SqlCommand MyCmd = new SqlCommand("sp_MyStoredProcedure", MyConn);
MyCmd.CommandType = CommandType.StoredProcedure;
MyCmd.Parameters.Add(new SqlParameter("@Var1", SqlDbType.Int));
MyCmd.Parameters.Add(new SqlParameter("@Var2", SqlDbType.Decimal);
MyCmd.Parameters[0].Direction = ParameterDirection.Output;
MyCmd.Parameters[1].Direction = ParameterDirection.Output;
SqlDataReader dr = MyCmd.ExecuteReader(CommandBehavior.CloseConnection);
int Var1 = Convert.ToInt32(MyCmd.Parameters[0].Value);
decimal Var1 = Convert.ToDecimal(MyCmd.Parameters[1].Value);
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

c# stored-procedures sql-server-2005 sqldatareader output-parameter

1
推荐指数
1
解决办法
9863
查看次数

使用存储过程输出参数

ALTER PROCEDURE dbo.StoredProcedure8
@emp_code bigint,
@co_id bigint,
@p decimal(8,2) output

AS

SELECT @p = (select sum(tran_value) from emp_ded_ben_trans where emp_code=@emp_code and co_id=@co_id and period_flg=2 and tax_flg=0)

RETURN  
Run Code Online (Sandbox Code Playgroud)

sql t-sql stored-procedures sql-server-2005 output-parameter

1
推荐指数
1
解决办法
6834
查看次数

C#:检索非参数化存储过程查询的输出参数?

我有这个存储过程

CREATE PROCEDURE [dbo].[TestProcedure] 
     @param1 int = 0
    ,@param2 int = 0
    ,@total_sales int = 5 OUTPUT 
AS
BEGIN
    SET NOCOUNT ON;

    SET @total_sales = @total_sales * 5
    SELECT * FROM SomeTable
END
Run Code Online (Sandbox Code Playgroud)

这个字符串在C#中

string strSQL = @"
                DECLARE @RC int
                DECLARE @param1 int
                DECLARE @param2 int
                DECLARE @total_sales int

                -- TODO: Set parameter values here.
                SET @param1 = 1
                SET @param2 = 2

                EXECUTE @RC = [TestDB].[dbo].[TestProcedure] 
                   @param1
                  ,@param2
                  ,@total_sales OUTPUT";
Run Code Online (Sandbox Code Playgroud)

现在我想检索输出值,但没有参数化输入查询!

我试过这个:

using (System.Data.SqlClient.SqlCommand cmd = …
Run Code Online (Sandbox Code Playgroud)

c# sql t-sql stored-procedures output-parameter

1
推荐指数
1
解决办法
938
查看次数

用c#写入输出参数

在SQL Server中,我可以将值IN传递给存储过程输出参数,对其进行更改,然后将其读回:

CREATE PROCEDURE [dbo].[testSP]
    @myOutputParam INT OUTPUT
AS
BEGIN
    SELECT @myOutputParam = @myOutputParam + 1
END
GO

DECLARE @x int = 1

EXEC testSP @myOutputParam = @x OUTPUT

PRINT @x -- prints: 2
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试从C#执行此操作时,它不起作用:

using (SqlConnection db = new SqlConnection("..."))
using (SqlCommand cmd = new SqlCommand("testSP", db))
{
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add("@myOutputParam", SqlDbType.Int).Value = (int)1;
    cmd.Parameters["@myOutputParam"].Direction = ParameterDirection.Output;

    db.Open();

    int rowsAffected = cmd.ExecuteNonQuery();
    int x = (int)cmd.Parameters["@myOutputParam"].Value;
}
Run Code Online (Sandbox Code Playgroud)

最后的int x分配会引发错误

指定演员表无效

我哪里错了?

c# sql-server stored-procedures output-parameter

1
推荐指数
1
解决办法
71
查看次数

如何将 OUTPUT DELETED 的结果分配给输出参数?

我有以下查询,可生成下一个可用的提单号。

ALTER PROCEDURE [dbo].[GetNextTruckBol]
    @FacilityId INT,
    @Count INT = 1
AS
BEGIN
    SET NOCOUNT ON;
    UPDATE Facilities
    SET NextTruckBol = NextTruckBol + @Count
    OUTPUT DELETED.NextTruckBol
    WHERE Id = @FacilityId
END
Run Code Online (Sandbox Code Playgroud)

但现在我需要修改它,以便将结果值分配给OUTPUT参数。

我知道如何声明OUTPUT参数。如何将 的值分配OUTPUT DELETED.NextTruckBol给该参数?

sql t-sql sql-server output-parameter

1
推荐指数
1
解决办法
439
查看次数