aufgerufen wird Diese Prozedur funktioniert von der MySQL-Befehlszeile sowohl remote und auf localhost und es funktioniert, wenn von PHP aufgerufen. In allen Fällen sind die Zuschüsse ausreichend:MySQL gespeicherte Prozedur schlägt fehl, wenn von R
CREATE PROCEDURE `myDB`.`lee_expout` (IN e int, IN g int)
BEGIN
select lm.groupname, lee.location, starttime, dark,
inadist,smldist,lardist,emptydur,inadur,smldur,lardur,emptyct,entct,inact,smlct,larct
from lee join leegroup_map lm using (location)
where exp_id= e and std_interval!=0 and groupset_id= g
order by starttime,groupname,location;
END
Ich versuche es von R zu nennen:
library(DBI)
library(RMySQL)
db <- dbConnect(MySQL(), user="user", password="pswd",
dbname="myDB", host="the.host.com")
#args to pass to the procedure
exp_id<-16
group_id<-2
#the procedure call
p <- paste('CALL lee_expout(', exp_id, ',', group_id,')', sep= ' ')
#the bare query
q <- paste('select lm.groupname, lee.location, starttime, dark,
inadist,smldist,lardist,emptydur,inadur,smldur,lardur,emptyct,entct,inact,smlct,larct
from lee join leegroup_map lm using (location)
where exp_id=',
exp_id,
' and std_interval!=0 and groupset_id=',
group_id,
'order by starttime,groupname,location', sep=' ')
rs_p <- dbSendQuery(db, statement=p) #run procedure and fail
p_data<-fetch(rs_p,n=30)
rs_q <- dbSendQuery(db, statement=q) #or comment out p, run query and succeed
q_data<-fetch(rs_q,n=30)
Die bloße Abfrage läuft gut. Der Prozeduraufruf nicht mit
RApache Warning/Error !!! Fehler bei mysqlExecStatement (conn, aussage, ...): RS-DBI-Treiber: (konnte nicht Lauf Aussage: VERFAHREN myDB.lee_expout nicht wieder ein Ergebnis im gegebenen Kontext setzen können)
die MySQL docs sagen
Für Aussagen, die 0 bestimmt werden kannnur zur Laufzeit ein Ergebnis zurückgeben gesetzt, ein PROCEDURE% s kann nicht zurückgegeben werden Ergebnis im angegebenen Kontext Fehler auftritt.
Man würde denken, dass, wenn ein Verfahren, dass Fehler werfen würde, wäre es, statt nur von R. unter allen Umständen geworfen wird
Irgendwelche Gedanken darüber, wie dieses Problem beheben?
haben Sie es geschafft, Ihren Store Proc auszuführen? Kannst du die richtige Antwort markieren, die dir hilft? oder wenn keiner von ihnen eine eigene Post macht und sie selbst beantwortet.So können die Interessenten hier eine Lösung finden. Danke – jangorecki
@ JanGorecki: Ich habe es nicht geschafft, die gespeicherte Prozedur auszuführen. Ich musste die bloße Abfrage verwenden. Das war vor einiger Zeit und vielleicht ist das DBI-Paket von R jetzt besser mit gespeicherten Prozeduren. – dnagirl
Ich benutze nicht MySQL, aber ich habe SQL-Abfragen auf Microsoft SQL-Datenbanken mit R ausgeführt. Ich habe festgestellt, dass, wenn in der Abfrage gibt es etwas anderes als die bare-Select-Anweisung, der Prozess fehlschlägt. Ich weiß nicht, ob es in MySQL notwendig ist, aber haben Sie versucht, die Zeilen "create procedure", "begin" und "end" zu entfernen? – thepule