bir parametresi olan bir saklı yordamını çağırmak için nasıl tip TABLE
bir parametresi olan bir saklı yordam, çağırmak istiyorum.
Bunu, Windows C++ uygulamasında (11g1) kullanarak nasıl yapabilirim?türü tablosunda
FUNCTION am_send(
p_caFnr IN VARCHAR2,
p_TabBgr IN DSKS_BGR_TAB,
p_caTextout OUT VARCHAR2)
RETURN NUMBER;
ve kullanılan türleri:
create or replace
TYPE DSKS_BGR_TAB,
AS TABLE OF DSKS_BGR
create or replace
TYPE DSKS_BGR
(BgrNr VARCHAR2(3),
TrId VARCHAR2(8))
şimdiye kadar ne yaptım:
Ben yarattı Burada
saklı yordam tanımı var th kullanarakDSKS_BGR
türünün nesne gösterimi e OTT Programı. Bugüne kadar Kodum:
Environment* env = Environment::createEnvironment(Environment::OBJECT);
try
{
Connection *con = env->createConnection("xxxxx", "xxxxx", "xxxxx");
Statement* statement = con->createStatement("BEGIN :1 := am_send(:2, :3, :4); END;");
statement->registerOutParam(1, OCCINUMBER);
statement->setString(2, "Test");
// ?? DSKS_BGR_TAB
statement->registerOutParam(4, OCCISTRING, 1000);
statement->execute();
int result = statement->getNumber(1);
string textOut = statement->getString(4);
env->terminateConnection(con);
}
catch(const SQLException &exc)
{
cout << exc.getErrorCode() << exc.getMessage();
}
Environment::terminateEnvironment(env);
nasıl TABLE
parametreyi ayarlamak için hiçbir fikrim yok.
Bir bellek sızıntısı olacak düşünüyorum - Eğer vektör her öğe için silme kullanarak belleği serbest bırakmak gerekir. Bunun iyi bir örnek olduğunu biliyorum, son zamanlarda bellek sızıntılarını çok fazla zaman harcadığım için sinir bozucu olduğum için üzgünüm:/ – user1645975
@ user1645975: Kesinlikle haklısınız: Yukarıdaki örnekte bir bellek sızıntısı vardı. Yukarıdaki (resmi oracle) örnek kodu düzeltirim. –
Evet, birkaç yıl önce bellek sızıntıları ve nasıl düşündüğüm hakkında hiçbir fikrim olmadığı zaman bu örnekleri hatırlıyorum - "Burada bir hata olamaz, bu resmi bir örnek ..." – user1645975