Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Knex कच्चे के साथ MySQL में एक संग्रहीत कार्यविधि कैसे बनाएं?

इससे मदद मिलनी चाहिए। यहाँ मैंने knex-migrate द्वारा अपेक्षित एक मॉड्यूल लिखा है। अपनी आवश्यकता के अनुकूल होने में कोई परेशानी नहीं होनी चाहिए।

const mysql = require('mysql2');

const {
  database: {
    connection: {
      host, user, password, database, port
    }
  }
} = require('./settings.js');

exports.up = async () => {
  const script = `
    CREATE DEFINER=\`<YOUR_DB_USER>\`@\`%\` PROCEDURE \`fill_date_dimension\`(IN startdate DATE,IN stopdate DATE)
    BEGIN
        DECLARE currentdate DATE;
        SET currentdate = startdate;
        WHILE currentdate < stopdate DO
        INSERT INTO time_dimension VALUES (
                        YEAR(currentdate)*10000+MONTH(currentdate)*100 + DAY(currentdate),
                        currentdate,
                        YEAR(currentdate),
                        MONTH(currentdate),
                        DAY(currentdate),
                        QUARTER(currentdate),
                        WEEKOFYEAR(currentdate),
                        DATE_FORMAT(currentdate,'%W'),
                        DATE_FORMAT(currentdate,'%M'),
                        'f',
                        CASE DAYOFWEEK(currentdate) WHEN 1 THEN 't' WHEN 7 then 't' ELSE 'f' END,
                        NULL);
        SET currentdate = ADDDATE(currentdate,INTERVAL 1 DAY);
        END WHILE;
    END`

  const connection = mysql.createConnection({
    host,
    user,
    database,
    password,
    port
  });

  return new Promise(function (resolve, reject) {
    connection.query(
      script,
      function (err) {
        if (err) {
          return reject(err);
        }

        return resolve();
      }
    );
  });
};

exports.down = async knex => knex.raw('DROP PROCEDURE IF EXISTS fill_date_dimension');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अभी () फ़ंक्शन में 6 घंटे जोड़ें

  2. SQL क्वेरी ठीक से काम नहीं कर रही है (संख्याएँ)

  3. MySQL रूट पासवर्ड कैसे रीसेट करें

  4. MySQL सर्वर का समय क्षेत्र कैसे बदलें

  5. @ संग्रहित प्रक्रिया में प्रतीक?