Параметр процедуры SQL для работы - PullRequest
1 голос
/ 05 марта 2019

Я создал процедуру под названием details_inventory с 1 параметром «слово» в MySQL Workbench.Когда я выполняю, например, CALL details_inventory("5"), результат покажет мне строку, содержащую 5. Отлично!Кажется, что это работает, но проблема, с которой я столкнулся, заключается в том, что Cygwin (код для командной строки см. Ниже) делает то же самое, что я делаю на MySQL, но я не знаю, как использовать параметр «word» из процедуры в моем коде.

--
-- Search inventory MySQL
--
DROP PROCEDURE IF EXISTS details_inventory;
DELIMITER ;;
CREATE PROCEDURE details_inventory(
    word VARCHAR(20)
)
BEGIN
SELECT * FROM search_inventory WHERE namn =word OR produktid = word OR hylla = word OR antal = word OR pris = word;
END
;;
DELIMITER ;
-- test if its work
CALL details_inventory("5"); 

код Cygwin для чтения из командной строки

"user strict";
// Import terminal.js
const terminal = require("./src/terminal.js");

// Read from commandline
const readline = require("readline");

//Main function
(function () {
    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
    });

    showMenu();
    rl.setPrompt("Type menu:  \n");
    rl.prompt();

    rl.on("close", process.exit);
    rl.on("line", async (line) => {
        line = line.trim();
        let lineArray = line.split(" ");

        switch (lineArray[0]) {
            case "quite":
            case "exit":
                process.exit();
                break;
            case "menu":
            case "help":
                showMenu();
                break;
            case "log":
                await terminal.log(lineArray[1]);
                break;
            case "shelf":
                await terminal.shelf();
                break;
            case "inventory":
                if (lineArray[1]) {
                    return await terminal.inventorySearch(lineArray[1]);
                } else {
                    return await terminal.inventory();
                };
                break;
            default:
        }
        rl.prompt();
    });
})();

function showMenu() {
    console.info(
        `Hi how can I help you \n`+
        `You can type these commands: \n` +
        `exit, quite: Exists from the program. \n` +
        `help, menu: Show commands again. \n` +
        `log <number>: Show log table. \n` +
        `shelf: Type to see shelf. \n` +
        `inventory: Show inventory \n` +
        `inventory <str>: Show inventory than are u looking for. \n`

    );
}

Здесь приведен код функции, показывающий, что я набираю в Cygwin, например «5», поэтому результатом будет строка, содержащая 5.

Где поместить параметр слова?Во-первых, я думал поставить CALL details_inventory (word);Это не работаетКогда я набираю log 5, в Cygwin ничего не происходит.

inventorySearch: async function () {
    const db = await mysql.createConnection(config);
    console.info("Inventory you are looking for: ");

    let sql = `CALL details_inventory(word);`; 
    let res;
    console.log(sql);
    res = await db.query(sql);
    res = res[0];
    console.table(res);

    db.end();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...