Questa procedura funziona dalla riga di comando MySQL sia in remoto che su localhost e funziona quando viene chiamata da PHP. In tutti i casi le borse di studio sono adeguate:La procedura memorizzata MySQL non riesce se richiamata da 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
sto cercando di chiamare da R:
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)
La query nuda funziona benissimo. La chiamata di procedura non riesce con
Rapache Attenzione/Errore !!! Errore in mysqlExecStatement (conn, dichiarazione, ...): il driver RS-DBI: (non poteva run dichiarazione: PROCEDURA myDB.lee_expout non può restituire un risultato impostato nel contesto dato)
il MySQL docs dire
Per istruzioni determinabili solo in fase di runtime per restituire un risultato impostato, una PROCEDURA% s non può restituire un risultato impostato nell'errore di contesto dato .
Si potrebbe pensare che se una procedura stavano per gettare quel errore, sarebbe stato gettato in tutte le circostanze, invece di proprio da R.
Ogni pensiero su come risolvere questo problema?
sei riuscito a gestire il tuo store proc? puoi contrassegnare la risposta corretta che ti aiuta? o se nessuno di loro si pubblica da solo e risponde da solo.Quindi le persone interessate possono trovare una soluzione qui. Grazie – jangorecki
@JanGorecki: non sono riuscito a eseguire la stored procedure. Ho dovuto usare la query nuda. Questo è stato un po 'di tempo fa e forse il pacchetto DBI di R è meglio sulle stored procedure ora. – dnagirl
Non utilizzo MySQL, ma ho eseguito query SQL su database Microsoft SQL utilizzando R. Ho notato che ogniqualvolta, nella query, c'è qualcosa tranne la semplice istruzione select, il processo fallisce. Non so se è necessario in MySQL, ma hai provato a rimuovere le righe "create procedure", "begin" e "end"? – thepule