Я очень новичок в процедурах MySQL, но мне нужна такая, которая, учитывая имя таблицы и идентификатор записи, создаст строковое представление полей и данных и вернет его.
Я хочу, чтобы он работал с каждой / любой таблицей в базе данных, учитывая только имя таблицы и идентификатор записи для анализа, поэтому я не могу жестко задавать поля заранее.Вывод, который я ищу, должен быть в следующем виде:
{{tableName:recordId|'field1Name'="field1Data";'field2Name'="field2Data"...;}}
Я пытался выяснить, как это сделать, но не знаю, как разыменовать имена полей + данные изпеременная, заполненная соответствующим оператором SELECT, и на самом деле не знает, как построить необходимую строку из всех этих данных.Я посмотрел на оператор ForEach()
, но не знаю, как заставить его перебирать каждое поле записи и вызывать как имена полей, так и необходимые данные.
Каждая запись в каждой таблице, которая будетбыть разыменованным через эту процедуру имеет поле с именем "id", которое определяется как BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT
и устанавливается как PRIMARY KEY
в каждой из указанных таблиц.
Может кто-нибудь дать мне несколько советов о том, как поставить этовсе вместе?
Пока у меня так много всего:
CREATE PROCEDURE `CompileRecord`(
IN tableName VARCHAR(64),
targetRecordId BIGINT(20) UNSIGNED,
OUT compiledData TEXT
)
BEGIN
SET oldData = SELECT * FROM tableName WHERE `id`=targetRecordId LIMIT 1;
SET compiledData = CONCAT("{{",tableName,":",targetRecordId,"|");
IF NOT oldData IS NULL THEN
/*
no idea what to do here? in PHP might look like..
foreach ($oldData as $field => $data)
$compiledData .= "'".$field."'=\"".$data."\";";
??
*/
ENDIF
SET compiledData = CONCAT (compiledData,"}}");
END