2015-03-20 2 views
0

У меня есть хранимая процедура оракула.рельсы, выполняющие ошибку хранимой процедуры

Когда я пытаюсь запустить следующее разработчика SQL работает отлично:

declare 
    vPan varchar2(32); 
    ErrorMsg varchar2(32); 
    ErrorCode varchar2(32); 
    SpErrorMsg varchar2(32); 

begin 


    DBO_MYDB.PKG_LTD.GET_PAN('8042049440330819','32', 'TEST', '0',vPan, ErrorMsg, ErrorCode, SpErrorMsg); 
    DBMS_OUTPUT.PUT_LINE(vPan); 

end; 

Но когда я пытаюсь запустить приведенный выше код в рельсах 3 следующим образом:

def number 
    errormsg = nil 
    errorcode = nil 
    sperrormsg = nil 
    vpan = nil 

    sql = 
    "BEGIN #{Pkgltd::PKG_LTD}.GET_PAN(' 
    8042049440330819','32', 'TEST', '0',vpan, errormsg, errorcode, sperrormsg); 
    END;" 

    connection = self.connection.raw_connection 
    cursor = connection.parse(sql) 

    cursor.bind_param(:errormsg, nil, String, 1000) 
    cursor.bind_param(:errorcode, nil, String, 1000) 
    cursor.bind_param(:sperrormsg, nil, String, 1000 
     cursor.bind_param(:vpan, nil, String, 1000) 

    cursor.exec 

    vpan, errormsg, errorcode, sperrormsg, vpan = cursor[:vpan], cursor[:errormsg], cursor[:errorcode], cursor[:sperrormsg] 
    cursor.close 
    vpan 
end 

Я получаю следующая ошибка:

syntax error, unexpected tIDENTIFIER, expecting ')' cursor.bind_param(:vpan, nil, String, 1000)

Любые идеи?

Я даже пробовал:

cursor.bind_param(:vpan, nil, varchar2, 1000); 

Не уверен, что если выше справедливо.

ответ

1

Эта линия отсутствует закрытие ):

cursor.bind_param(:sperrormsg, nil, String, 1000 

Оно должно быть:

cursor.bind_param(:sperrormsg, nil, String, 1000) 
Смежные вопросы