Преобразование хранимых процедур MySQL в функцию PostgreSQL. Что мне делать с этими вызовами replace ()? - PullRequest
2 голосов
/ 10 января 2011

Я только что завершил преобразование 84 хранимых процедур из MySQL в функции PostgreSQL.Единственное, что не было выяснено, это что делать с вызовами replace ().Функция не существует в PostgreSQL.Я уверен, что кто-то должен был сделать это раньше.Любые предложения?

set @sql="CREATE TABLE `tbodefcall...(An UnGodly Amount of code that creates tables ...honeid_cd_idx (PhoneID,CallDate);";
    set @sql =  Replace(@sql, 'tbodefcallback', concat('tbo_callback',_ProjectID) );
    set @sql =  Replace(@sql, 'tbodefcontact', concat('tbo_contact',_ProjectID) );
    set @sql =  Replace(@sql, 'tbodefscriptkvota', concat('tbo_scriptkvota',_ProjectID) );
    set @sql =  Replace(@sql, 'tbodefscript', concat('tbo_script',_ProjectID) );
    set @sql =  Replace(@sql, 'tbodeftermcode', concat('tbo_termcode',_ProjectID) );
    set @sql =  Replace(@sql, 'tbodefprojectlogon', concat('tbo_projectlogon',_ProjectID) );
    set @sql =  Replace(@sql, 'tbodefcomment', concat('tbo_comment',_ProjectID) );
    set @sql =  Replace(@sql, 'tbodefvoicerecorder', concat('tbo_voicerecorder',_ProjectID) );
    set @sql =  Replace(@sql, 'tbodefquestiongroup', concat('tbo_questiongroup',_ProjectID) );
    set @sql =  Replace(@sql, 'tbodefquestion', concat('tbo_question',_ProjectID) );

Спасибо за любую помощь или предложения.Ребята, вы помогли мне в этом проекте!

Ответы [ 2 ]

4 голосов
/ 10 января 2011

Postgresql имеет функцию replace, по крайней мере, в 8.4;какую версию вы используете?

steve@steve@[local] =# select replace('create table tblfoo', 'tblfoo', 'tblfoo_44');
        replace         
------------------------
 create table tblfoo_44
(1 row)
2 голосов
/ 17 января 2011

Вы на самом деле ищете команду "upsert". В PostgreSQL вы выполняете это следующим образом:

UPDATE ...;
IF NOT FOUND THEN -- UPDATE didn't touch anything
  INSERT ...;
END IF;
...