私はこれまでMySql
ストアド プロシージャを作成したことがないので、まったく知りません。いくつかのレコードを含むデータベーステーブルが 1 つあります。主な列はdateTime
- このレコードがデータベースに保存された日時です。
指定された日付からすべてのレコードを選択する MySql ストアド プロシージャを作成しました。
CREATE PROCEDURE getMessages(IN dateFrom DATETIME)
SELECT * FROM EsbMessage WHERE dateTime <= dateFrom;
そして、これは呼び出しです:
CALL getMessages('2012-10-04 13:11:09');
これは正しく機能し、指定された日付からのレコードが返されます。
私がする必要があるのは:
- レコードが 1 週間以上経過している場合は、他の列を更新する必要があります。
- 記録が 1 年以上経過している場合は、その記録を削除する必要があります。
これはプログラムで簡単に実行できますが、この場合はストアド プロシージャを使用して実行する必要があります。
そこで、次のようなことを考えています。
CREATE PROCEDURE updateMessages(IN dateFrom DATETIME)
BEGIN
SELECT * FROM EsbMessage WHERE dateTime <= dateFrom;
#for each message
#if the message is over one week old but not over one year old:
UPDATE EsbMessage SET body = '';
#if message is over one year old:
DELETE FROM EsbMessage WHERE dateTime = #message.dateTime
END
しかし、ストアド プロシージャで for ループを使用する方法と、要件に応じて if ステートメントを記述する方法と、MySql で日付をカウントする方法がわかりません。たとえば、現在の日付がある場合、現在の日付から 365 日を引く必要があります。
誰かがこの問題について私を助けてくれますか?