簡體   English   中英

從 AX Dynamics 365 中的 x++ 調用 SQL 過程

[英]Call SQL procedure from x++ in AX Dynamics 365

I have successfully called sql procedure in x++ class (ax dynamics 365) with params, but unable to get return/output value in x++ class from sql procedure. 這是以下代碼:

X++ 代碼:

Connection connection = new Connection();
Statement statement = connection.createStatement();
str sql;
ResultSet result; 
SqlStatementExecutePermission permission;
int64 value1 = 8;
str value2 = "War-001";
sql = strFmt('Exec [UpdateTimesheetRecord] \'%1\',\'%2\'', value1 ,  value2 ); 
permission = new SqlStatementExecutePermission(sql);
permission.assert();
try
{
    result = statement.executeQuery(sql); 
}
catch
{ 
}
CodeAccessPermission::revertAssert();

Sql 程序:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE UpdateTimesheetRecord
@Value1 INT,
@Value2 VARCHAR(50)
AS
Begin Transaction 
UPDATE  WARHCMTIMESHEET
SET [STATUS] = @Value1  
Where TimesheetId = @Value2 
If @@ERROR <> 0 
    Begin
        RollBack Transaction 
        Return -1 
    End
Else
    Begin
        Commit Transaction
        Return @Value1
    End 
GO

This code is working to get resultset from sql procedure, if you are using select query in sql procedure but if you update a record in sql procedure and want to get return value in x++ it won't works:

Connection connection = new Connection();
Statement statement = connection.createStatement(); 
ResultSet result; str sql; int output; ResultSet testRS;
SqlStatementExecutePermission permission; 
sql = strFmt('Exec [GetAllTimesheet]'); 
permission = new SqlStatementExecutePermission(sql);
permission.assert();  
testRS = statement.executeQuery(sql);
while(testRS.next())
    {
        info(testRS.getString(2));
    } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM