Как мне сделать запрос с переменными, предоставленными пользователем, и сохранить его? - PullRequest
1 голос
/ 01 апреля 2019

Я база данных noob.
Я строю базу данных с кучей свойств.
Я хочу сделать так, чтобы владелец свойства (пользователь) мог передать свое свойство в мою таблицу property, просто вызвав функцию / хранимую процедуру / хранимую процедуру / подготовленный оператор (я их погуглил, но с трудом время выяснить, что я ищу).

Вот мой код запроса вставки:

INSERT INTO property
(property_owner_id, property_type_id, address, zip_code, area_m2, price_€)
VALUES
(/* Owner ID */,/* Property Type ID */,/* Address */,/* Zip Code */,/* Area */,/* Price */);

Итак, я бы хотел создать что-то вроде submit функции, которую я мог бы хранить. Тогда владельцу недвижимости нужно будет сделать что-то вроде:

submit(his id, his property's type, address, zip code, area, price)

Я ищу ответы и вижу что-то с «@», а иногда нет.
Я также пока не совсем понимаю, что такое «функция / хранимая процедура / хранимая процедура / подготовленный оператор».
Кажется, он также меняется с языка на язык.
В некоторых примерах мне нужно заранее установить переменную / параметр. В других я не.

Я только начал изучать SQL. Я знаю, как работает база данных в целом.
Я знаю, как создавать таблицы, обновлять их, вставлять данные, создавать первичные и внешние ключи.
Я знаю, как запрашивать данные, используя команды соединения, левого соединения, перекрестного соединения и т. Д., А также команды where, имея, order by, group by и т. Д.
Но на данный момент я не совсем понимаю, как создать повторно используемый блок кода, в котором я могу просто вызвать его имя и вставить только переменные / параметры.

Если это поможет, я использую MySQL Workbench 6.2.5 с UwAmp.

Спасибо!

1 Ответ

1 голос
/ 01 апреля 2019

Вы, вероятно, уже читали о хранимых процедурах, но, возможно, эта ссылка полезна.

На ваш вопрос: Вам нужна процедура, которая может принимать параметр при его вызове.

CREATE PROCEDURE addtoproperty(
    IN ownerid INT,
    IN propertytype INT,
    IN adress VARCHAR,
    IN zipcode INT,
    IN area VARCHAR,
    IN price DECIMAL(15,2)      
)
BEGIN
    INSERT INTO property
        (property_owner_id, property_type_id, address, zip_code, area_m2, price_€)
    VALUES
        (ownerid,propertytype, adress, zipcode, area, price);
END;

И вы бы использовали эту процедуру со следующим утверждением. На этот раз вам нужно заменить текст на фактические значения. Так что ownerid будет примерно 12345.

CALL addtoproperty(ownerid,propertytype, adress, zipcode, area, price);
...