Подключение к Oracle ужасно. Вот немного более чистого кода с оператором using. Многие другие примеры не вызывают методы IDisposable для создаваемых ими объектов.
using (OracleConnection connection = new OracleConnection("ConnectionString"))
using (OracleCommand command = new OracleCommand("ProcName", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("ParameterName", OracleDbType.Varchar2).Value = "Your Data Here";
command.Parameters.Add("SomeOutVar", OracleDbType.Varchar2, 120);
command.Parameters["return_out"].Direction = ParameterDirection.Output;
command.Parameters.Add("SomeOutVar1", OracleDbType.Varchar2, 120);
command.Parameters["return_out2"].Direction = ParameterDirection.Output;
connection.Open();
command.ExecuteNonQuery();
string SomeOutVar = command.Parameters["SomeOutVar"].Value.ToString();
string SomeOutVar1 = command.Parameters["SomeOutVar1"].Value.ToString();
}
Когда вызывается ваш обработчик onLoad, он вызывается так, как если бы он был функцией-членом экземпляра LoadVars, а не вашего пользовательского экземпляра.
Есть несколько способов обойти это, один заключается в использовании Delegate.create () для создания функции, которая будет работать по назначению, например:
import mx.utils.Delegate;
class user {
var lastname:String;
var ontvang:LoadVars;
function user(in_ID:Number){
ontvang = new LoadVars();
var zend:LoadVars = new LoadVars();
zend.ID = in_ID;
ontvang.onLoad = Delegate.create(this, onLoad);
zend.sendAndLoad("http://localhost/Services/getUser.php", ontvang, "POST");
};
}
function onLoad(success:Boolean) : Void
{
if (success) {
lastname = ontvang.lastname;
} else {
lastname = 'error';
}
}
}
Не забывайте, что загрузка является асинхронной - когда вы создаете один из своих пользовательских объектов, переменные-члены не будут доступны сразу. Что вам может понадобиться, так это позволить вашему пользовательскому объекту сигнализировать о своей готовности так же, как это делает LoadVars (например, с помощью функции обратного вызова, предоставляемой вызывающей стороной), чтобы ваше приложение управлялось этими асинхронными событиями.