Sequelize sytax für den Aufruf der gespeicherten Prozedur mit der input-Parameter mit Hilfe von MSSQL

Ich erhalte eine Fehlermeldung bei dem code unten und kann nicht finden, die genaue Informationen für die syntax zum aufrufen einer MSSQL-Prozedur speichern durch sequelize. Ich habe auch versucht, die syntx von der anderen Beiträge auf stackoverflow ähnlich wie CALL spcName(param1, …)

Fehler:

(node:14580) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): SequelizeDatabaseError: Incorrect syntax near '@param1'.

code:

await sequelize.query('CALL spcName(@param1, @param2, @param3, @param4);', [value1, value2, value3, value4])
InformationsquelleAutor Kentonbmax | 2017-03-01



3 Replies
  1. 4

    Code sieht wie folgt aus und funktioniert für MSSQL. Zeigen wollte date Beispiel, weil der Formatierung:

    return await sequelize.query('scpTest :inDate', {replacements: {inDate: moment().subtract('d', 4).toISOString(), type: sequelize.QueryTypes.SELECT}

    Folgenden die Frage, Beispiel:

    await sequelize.query('spcName :param1, :param2, :param3, :param4)', {replacements: {param1: value, param2: value, param3: value, param4: value}, type: sequelize.QueryTypes.SELECT})
    • FYI – ich sich angemeldet haben ein Problem mit Sequelize in Bezug auf die Abfrage von gespeicherten Prozeduren zurückgeben doppeltes Ergebnis-sets.
    • Zusätzlich protokolliert ein Problem, wo meine Aufrufe von gespeicherten Prozeduren zurückgeben doppelte Ergebnisse. D.h. ein array von arrays von Ergebnissen oder [[Ergebnisse], [Ergebnisse]]
    • Neben der QueryTypes.WÄHLEN Sie behebt das doppelte Ergebnisse Problem.
  2. 1

    Können Sie versuchen,

    await sequelize.query('CALL spcName(:params )', { replacements: {params : ['value1, value2, value3, value4']} })
    • Es gibt falsche syntax in der Nähe von value1
    • hmm. Es ist ein sql-Fehler nicht im Zusammenhang mit sequelize stackoverflow.com/a/19763826/4583460
    • Ich habe nicht copy & paste. Sollte die params-Werte-array ein string sein?
    • hmm, ich habe Bedenken, dass sequelize werden konnte einlegen was nicht, ist es eine Protokollierung in sql
  3. 0

    Verwenden : um anzuzeigen, parameter und replacements Werte gemappt werden. Siehe Beispiel unten.

       async getPlayers(UserId: number, requestObject: any): Promise<any> {
            this.sequelize = Server.sequelize;
            try {
                let o_rowcnt = 0;
                let playersList = await this.sequelize.query('CALL sp_discovery (:p_user, :p_game, :p_platform, :p_headphone,:p_start,:p_end , :p_stanceId , @o_rowcnt )',
                    {
                        replacements: { 
                            p_user: UserId, 
                            p_game: requestObject.gameid,
                            p_platform: requestObject.platformid,
                            p_headphone:  requestObject.headphone,
                            p_start: requestObject.index,
                            p_end: requestObject.limit,
                            p_stanceId: requestObject.stanceid 
                        }
                    }
                );
                return playersList;
            } catch (e) {
                return e;
            }
        }
    • Sie müssen erklären, deine Lösung, statt einfach posten den code.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.