标签: output-parameter

如何从Rails中的MySQL存储过程中获取输出参数?

我试图从MySQL存储过程中获取输出参数,让我们看一下下面的例子:

1在mysql中我创建了这个过程并且它有效.

CREATE PROCEDURE sp_name (out id int)
Begin
    select id into @id from table order by id desc limit 1;
End

mysql> call sp_deduct_credit_and_money(@id);
Query OK, 0 rows affected (0.01 sec)

mysql> select @id;
+--------------+
|          @id |
+--------------+
|           24 |
+--------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

2因此,它也适用于Rails,但它不会为我返回任何值:

ActiveRecord::Base.connection.execute("call sp_name(@id)")
ActiveRecord::Base.connection.execute("select @id")
Run Code Online (Sandbox Code Playgroud)

这是Rails中的日志

(2.0ms)  call sp_name(@id)
(0.1ms)  select @id
Run Code Online (Sandbox Code Playgroud)

我的问题是如何获得输出参数的返回值@id

mysql stored-procedures ruby-on-rails output-parameter

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

如何使用Powershell将存储过程输出参数转换为变量?

我有一个存储过程返回一个字符串,我需要结果作为powershell变量.我坚持输出参数语法.

Powershell脚本:

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=myserver;Database=mydb;Integrated Security=True"
$SqlConnection.Open()
$SqlConnection.State

$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "testsp3"
$SqlCmd.Connection = $SqlConnection


$op = new-object System.Data.SqlClient.SqlParameter;
$op.ParameterName = "@answer";
$op.Direction = [System.Data.ParameterDirection]'Output';
$op.DbType = [System.Data.DbType]'String';
$op.Size = 2500

$SqlCmd.Parameters.Add($op);

$what = $SqlCmd.ExecuteScalar();

$what
Run Code Online (Sandbox Code Playgroud)

错误信息:

使用"0"参数调用"ExecuteScalar"的异常:"过程或函数'testsp3'需要参数'@answer',这是未提供的."

存储过程如果重要:

CREATE PROCEDURE [dbo].[testsp3]
@answer nvarchar(max) output

AS
BEGIN
    SET NOCOUNT ON;

    SELECT @answer = 'blah blah blah'
    RETURN
END
GO
Run Code Online (Sandbox Code Playgroud)

powershell stored-procedures output-parameter

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

Java中的输出参数

使用第三方API,我观察到以下内容.

而不是使用,

public static string getString(){
   return "Hello World";
}
Run Code Online (Sandbox Code Playgroud)

它使用类似的东西

public static void getString(String output){

}
Run Code Online (Sandbox Code Playgroud)

我正在分配"输出"字符串.

我很好奇实现这种功能的原因.使用这些输出参数有什么好处?

java api methods output-parameter

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

Java 中的列表作为输出参数

我正在尝试编写一个以 List 对象作为输出参数的 Java 函数。

boolean myFunction(int x, in y, List myList)
{
    /* ...Do things... */
    myList=anotherList.subList(fromIndex, toIndex);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

在此之前,我调用函数,声明 myList 如下:

List myList=null;
Run Code Online (Sandbox Code Playgroud)

然后我调用该函数

myFunction(x,y,myList)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试操作 myList 时,我发现 myList 仍然为空。

我确信anotherList我的函数代码中的变量不为空,并且我确信该subList函数返回一个非空列表。

原因是什么?如何在 Java 函数中传递 List 作为输出参数?

java list function-call output-parameter

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

如何在oracle sql Developer中选择存储过程输出参数作为表

我有一个程序

create or replace PROCEDURE proc
(
  p1 IN varchar2,
  p2 IN varchar2,
  p3 OUT varchar2
) AS
BEGIN
 p3:= p1 || ' ' || p2
END proc
Run Code Online (Sandbox Code Playgroud)

我称之为

Declare
  P3 varchar(50);
Begin
 proc('foo', 'bar', P3)
END;
Run Code Online (Sandbox Code Playgroud)

我可以使用打印出 P3 的值

Dbms_Output.Put_line('P3: ' || P3)
Run Code Online (Sandbox Code Playgroud)

但我需要将结果作为可供选择的表格。我能想到的最好的办法是

Declare
  P3 varchar(50);
Begin
 proc('foo', 'bar', P3)
END;
SELECT &&P3 from dual;
Run Code Online (Sandbox Code Playgroud)

但这给了我一个错误

Error report -
ORA-06550: line 5, column 12:
PL/SQL: ORA-00936: missing expression
ORA-06550: line 5, column 5:
PL/SQL: SQL statement ignored
06550. …
Run Code Online (Sandbox Code Playgroud)

oracle stored-procedures output-parameter oracle-sqldeveloper

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

从LINQ To SQL ExecuteQuery中的存储过程捕获输出参数

在执行存储过程时,是否可以从LINQ To SQL DataContext返回输出参数?

IEnumerable<Address> result = 
    ExecuteQuery<Address>(((MethodInfo)(MethodInfo.GetCurrentMethod())), 
       address, pageIndex, pageSize, totalCount);
Run Code Online (Sandbox Code Playgroud)

其中address,pageIndexpageSize被输入的参数,并且TotalCount是一个输出参数.

如何捕获输出参数?

这是另一种尝试,但再次无法获取参数值:


    [Function(Name = "Telecom.AddressSearch")]
        private IEnumerable SearchAddress([Parameter(Name = "address", DbType = "varchar")] string address,
                                             [Parameter(Name = "pageIndex", DbType = "int")] int pageIndex,
                                             [Parameter(Name = "pageSize", DbType = "int")] int pageSize,
                                             [Parameter(Name = "totalCount", DbType = "int")] ref int totalCount)
        {            
            IEnumerable result = ExecuteQuery(((MethodInfo)(MethodInfo.GetCurrentMethod())), address, pageIndex, pageSize, totalCount);

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

stored-procedures output-parameter linq-to-sql

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

该MATLAB函数返回结果向量

如果我在MATLAB中有一个函数,并且在其中我有一个循环,它计算两个变量,如:

for index = 1:1000,
    var1 = 0.0;
    var2 = zeros(size(someMatrix));
    ...
    %some calculus...
    ...
end
Run Code Online (Sandbox Code Playgroud)

我如何定义函数来返回这两个变量,但是它们在循环中遇到的所有变化都是如此

var1 = [1, 3, 5, 7]
var2 = some matrix,
Run Code Online (Sandbox Code Playgroud)

因此,该函数返回单个值.如何从循环中返回结果向量?

matlab output-parameter

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

PetaPoco和存储过程的输出参数?

我正在尝试使用PetaPoco设置输出参数.我发现有人在线使用这个样本:

var ctx = new CustomDBDatabase();
var total = new SqlParameter("Total", System.Data.SqlDbType.Int);
total.Direction = System.Data.ParameterDirection.Output;

var results = ctx.Query<DBEntity>("exec GetDBEntities @StartIndex, @MaxIndex, @TotalCount = @Total out", 
  id, start, max, total);

int totalCount = (int)total.Value;
Run Code Online (Sandbox Code Playgroud)

但是,total.value返回null,即使我直接针对SQL Server运行此语句,它也会返回3.这是否与PetaPoco正确设置?是否支持输出参数?

谢谢.

stored-procedures output-parameter petapoco

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

通过存储过程从SQL Server返回输出参数和c#

我有一个时间从SQL Server获取输出值的魔鬼.

这是我的存储过程:

ALTER PROCEDURE [dbo].[Insert_UnknownCustomer_Quote_Document]
-- Add the parameters for the stored procedure here
@NewDocumentFileName nvarchar(100),
@NewDocumentWordCount int,
@NewQuoteAmount money,
@NewQuoteNumber int OUTPUT = 0

AS

DECLARE @Today datetime
SELECT @Today = GETDATE()

BEGIN TRANSACTION
BEGIN TRY

BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
SET NOCOUNT ON;


-- Insert statements for procedure here
INSERT INTO dbo.Customers(DateAdded)
VALUES (@Today)

INSERT INTO dbo.Quotes(CustomerID, QuoteAmount, QuoteDate)
VALUES (@@IDENTITY, @NewQuoteAmount, @Today)

SELECT @NewQuoteNumber = …
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures output-parameter c#-4.0

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

在Access中使用SQL Server存储过程的输出参数

我试图从Access 2013 VBA执行过程后从SQL Server 2008中的存储过程获取输出变量(新标识列).我并不完全了解所有的adodb内容,而且我已尝试过不同文章中的一些内容但无济于事.这就是我现在所处的地方......

存储过程:

PROCEDURE [proc_NewClient]
    @Type INT, 
    @PhoneIntakeID INT,
    @ClientID INT = NULL,
    @NewPSID INT = null OUTPUT (2 possible ways to call the proc, one does not produce an output variable)

   INSERT INTO tblClientDetails (ClientID, PhoneIntakeID, Client_Status) 
   VALUES (@ClientID, @PhoneIntakeID, 'Applicant')

   DECLARE @NewClientDetailID int
   SELECT @NewClientDetailID = SCOPE_IDENTITY()

   INSERT INTO tblPS_Psychosocial (ClientDetailID, Client) 
   VALUES (@NewClientDetailID, @ClientID)

   SELECT @NewPSID = SCOPE_IDENTITY()

   INSERT INTO tblPS_AbuseHistory (PsychosocialID) 
   VALUES (@NewPSID)

   INSERT INTO tblPS_FamilyHistory(PsychosocialID) VALUES (@NewPSID)
   INSERT INTO tblPS_FinancialHistory (PsychosocialID) VALUES …
Run Code Online (Sandbox Code Playgroud)

ms-access vba stored-procedures output-parameter sql-server-2008

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