[英]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.