2013-03-07 55 views
0

我想知道我是否可以得到一些帮助。我在Postgresql中有以下功能,它旨在为我提供一个“solrid”值,而不必每次将它存储在数据库中,并且基本上通过在值的开始处放置“A”来工作。将简单的postgreSQL函数转换为Mysql

-- Setup Solrid Function 
CREATE OR REPLACE FUNCTION solrid(IN local_id INTEGER, OUT result TEXT) AS $$ 
DECLARE 
    database_id TEXT := 'A'; 
BEGIN 
    result := database_id || local_id::TEXT; 
END; 
$$ LANGUAGE PLPGSQL; 

现在我有我的数据库迁移到MySQL,我想知道是否有人能告诉我怎么可以把这个功能使用MySQL。

+0

你能提供样品的输入和预期的结果? – Rostyslav 2013-03-07 11:05:06

+4

仅供参考,不需要写入PL/PgSQL,简单的SQL函数就是'CREATE OR REPLACE FUNCTION solrid(integer)RETURNS text AS $$ SELECT'A'|| $ 1; $$ LANGUAGE SQL'。这会比以前快很多,并且通常可以被内联。 – 2013-03-07 11:18:57

+0

这是一种让我的工作表“id”进入solr_id而不必存储solr_id的方法。作业“ID”可能是123,solr_id将是A123。 – Jimmy 2013-03-07 11:22:40

回答

1

这里是在MySQL相同的功能:

DELIMITER // 

DROP FUNCTION IF EXISTS solrid // 

CREATE FUNCTION solrid(local_id INTEGER) RETURNS TEXT 
BEGIN 
    DECLARE database_id TEXT; 
    SET database_id = 'A'; 
    RETURN CONCAT(database_id, CAST(local_id AS CHAR)); 
END // 

DELIMITER ;