kullanarak depolanmış bir Oracle prosedürünü yürütme ROracle üzerinden R'de bir Oracle prosedürünü yürütme/çağırma konusunda sorun yaşıyorum. Yordamı çağırmanın birçok farklı yolunu denedim ve aynı hataları almaya devam ediyorum. SELECT sorguları yaparken sorun yaşamadım ancak bir prosedür çağırmak zor oluyor. OracleProc ve dbSendQuery işlevlerini kullandım, ancak boşuna. Onların ikisi de işe yaramıyor. Roracle belgeleri arama prosedürlerinin örnekleri için acıklı.ROracle
Oracle prosedürünün MYSCHEMA'da MYPROC olarak adlandırıldığını varsayalım.
aşağıdaki eserlerini Oracle Developer: Prosedür YOK parametreler
doğrudan Oracle Developer prosedürü yürütmek, sorun yoktur (birkaç tablo okuma ve bir tabloya yazma içerir) ile çok basittir (ancak R)
EXEC MYSCHEMA.MYPROC;
Sonra (ROracle yoluyla) R aynı prosedürü çağırmak için denemek ve bana hata veriyor. .oci.oracleProc (conn, açıklamada, data = verilerinde
Hata: En fazla bu hatadır
# This didn't work in R > require(ROracle) > LOAD_query <- oracleProc(con1, "BEGIN EXEC MYSCHEMA.MYPROC; END;")
: Ben aynı hataları olsun prosedürü çağırmak için farklı yollar denedim önceden getirir = Önceden alma:
# Then i tried the following and it still didn't work
> LOAD_query <- oracleProc(con1, "EXEC MYSCHEMA.MYPROC;")
Bu (yukarıdaki biraz farklı) ı var hatadır:
.oci.oracleProc (10Hata bağl, deyim, data = veri önceden getirir = Önalım,: ORA-00900: geçersiz SQL deyimi
# so then i tried dbSendQuery which works perfectly fine with any SELECT statements but it didn't work
> LOAD_query <- dbSendQuery(con1, "BEGIN EXEC MYSCHEMA.MYPROC; END;")
Bu aynı i almak hatası (olduğu .oci.SendQuery (bağlantı, açıklamada, veri = veri, önceden alma = prefetch içinde
birinci) olarak 10Hata,:
Yordamımın herhangi bir parametresi yok. Bahsettiğim gibi, Oracle geliştiricisinde çağrıldığında gayet iyi çalışıyor. R'de gülünç bir şekilde basit bir sorgu çalışmasının nasıl yapılacağına dair fikirlerim tükendi. Sadece bu işi ROracle üzerinden almakla ilgileniyorum.
ROracle bilmiyorum ama size söyleyebilirim EXECUTE bir SQL \ * Plus komutudur. Ne SQL'de ne de PL/SQL çağrılarında geçerlidir. "LOAD_query <- oracleProc (con1,") işlevini deneyin. MySCHEMA.MYPROC ") Benim tahminim sen yarı-kolon gerek yok ama belki sen yaparsın – APC
Teşekkürler @APC, çok yardımcı oldu! Senin öneri" MYSCHEMA.MYPROC "işe yaramadı, ben koşmanın farklı versiyonlarını denedi EXEC'i seyrediyor ve çözümü buldum: "BEGIN MYSCHEMA, MYPROC; SONUÇ: “Woohoo. PS- ihtiyacınız olacaktır; işlem çağrısının sonunda, ki bu mesajın hiç olmaması gereken sendQuery'den farklıdır. Bu kadar tutarsızlık!” { PSS- EXEC veya EXECUTE her ikisi de PLSQL içinde – Ankhnesmerira