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
我在 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
我创建了一个存储过程,它返回结果行和两个输出参数。我无法找到任何春从事情,我可以得到ResultSet和outPutParameters。我想实现像
这样使用Spring框架。
spring resultset jdbctemplate output-parameter java-stored-procedures
我创建了一个类似于这个简化示例的存储过程:
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
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
我有这个存储过程
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) 在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分配会引发错误
指定演员表无效
我哪里错了?
我有以下查询,可生成下一个可用的提单号。
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给该参数?
c# ×4
sql ×3
sql-server ×3
t-sql ×3
adodb ×1
asp-classic ×1
jdbctemplate ×1
resultset ×1
spring ×1