Мой личный любимый способ научиться лучше программировать — научиться лучше отлаживать.
Отладка требует от вас понимания того, как машина воспринимает ваш код.
Это помогает вам воспринимать сообщения об ошибках как информацию, а не как какую-то информацию. ужасное нарушение правил кодирования.
Поэтому, когда я не очень хорошо знаю определенный язык программирования, я беру код у других людей (легко доступный на GitHub или обмене стеками) и пытаюсь подогнать его под свои нужды.

Будут ошибки, и они научат меня читать код, понимать язык и, в конечном итоге... писать свой собственный.

Итак, используя этот метод, давайте попробуем упростить ту часть SQL, которая пугает большинство людей: страшную хранимую процедуру.

Большая разница между хранимыми процедурами и функциями заключается в том, что процедуры могут выполнять табличные операции, такие как вставка или удаление, и им не обязательно возвращать значение.

Итак, давайте начнем с малого и вставим одну строку в таблицу «Прокат DVD». Допустим, 1 актер в таблице актеров.

Это фреймворк, который я нашел на stack exchange. Первые несколько строк представляют собой синтаксис.

Не вижу смысла каждый раз все это печатать.

Логика посередине и моя способность отлаживать до тех пор, пока требование не будет выполнено, — вот что делает меня аналитиком. Это не нереальная способность хранить в одном мозгу синтаксис четырех языков программирования.

CREATE PROCEDURE MyInsert(_sno integer, _eid integer, _sd date, _ed date, _sid integer, _status boolean)
LANGUAGE SQL
AS $BODY$
    INSERT INTO app_for_leave(sno, eid, sd, ed, sid, status)
    VALUES(_sno, _eid, _sd, _ed, _sid, _status);   
$BODY$;

Вот как я собираюсь изменить его, чтобы вставить одну строку. Помните, я уже знаю, что это не будет на 100% правильным. Это нормально. Мне нужно сообщение об ошибке, чтобы понять, в чем я ошибаюсь и что мне нужно узнать.

CREATE PROCEDURE ActorInsert(_actor_id integer, _first_name text,_last_name text )
LANGUAGE SQL
AS $BODY$
    INSERT INTO actor VALUES(_actor_id, _first_name, _last_name);   
$BODY$;

Итак, давайте попробуем еще раз,

CREATE PROCEDURE ActorInsert(_actor_id integer, _first_name text,_last_name text )
LANGUAGE SQL
AS $BODY$
    INSERT INTO public.actor(actor_id, first_name, last_name)
    VALUES(_actor_id, _first_name, _last_name);   
$BODY$;

Этот скомпилировался просто отлично. Но хранимые процедуры всегда будут компилироваться, если синтаксис правильный. Он будет работать и давать правильный результат только в том случае, если сама логика верна. Итак, назовем это:

CALL ActorInsert(500,'Deepika','Padukoke');

Работал!

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

В мире много умных людей, которые уже создали код, и мы ничего не теряем, отдавая им должное и используя их знания для улучшения наших собственных.

Единственное, что я не рекомендую, когда вы пытаетесь учиться, — это использование ИИ.

ИИ не требует, чтобы вы чему-то учились или даже понимали генерируемые сообщения об ошибках.

Использование искусственного интеллекта более чем нормально, если вы опытный пользователь, желающий ускорить вывод. Но если вы пытаетесь учиться, развивайте свой собственный интеллект, а не базу знаний машин.

Не бойтесь потерпеть неудачу. Вместо этого бойтесь, что вы даже не пытаетесь учиться.

Всем удачного кодирования.