Wątek przeniesiony 2022-10-14 12:47 z Java przez cerrato.

Problem z uruchomieniem procedury w Pool

0

Dzień dobry,
w jaki sposób mogę uruchomić procedure (Stored Procedure) napisaną w Postgresql w Node.js za pomocą Pool (https://node-postgres.com/api/pool)?

Pozdrawiam,
Łukasz

1
select * from moja_procedura(31415926);
0
Adamek Adam napisał(a):
select * from moja_procedura(31415926);

Czy te rozwiązanie obejmuje również procedury, które wykonują modyfikacje danych np: za pomocą UPDATE lub DELETE?

0

Standardowo dokumentacja powie najwięcej
https://www.postgresql.org/docs/current/sql-call.html
Bo ja ostatnio widziałem Postgresql jak kawalerem bylem ;) I bardzo lubię ta baze danych , jak bym nie uzywal sqlite to pewnie uzywal bym postgresql :D

Notes
The user must have EXECUTE privilege on the procedure in order to be allowed to invoke it.
To call a function (not a procedure), use SELECT instead.
0

Problem rozwiązany. Może komuś przyda się rozwiązanie:

app.post('/test', (req, res) => {

  baza_modal.test(req.body)
  .then(response => {
    res.status(200).send('wykonano');
  })
  .catch(error => {
    res.status(500).send(error);
  })
})
---------------------------------

const test = (body) => {
  return new Promise(function (resolve) {
    const { id } = body
    pool.query("CALL proc_kontrahent_usun($1)", [id],
    (error, results) => {
      if (error) {
        reject(error)
      }
      resolve(results.rows[0])
    }
  )
})
}
------------------------------------------------
Wykonanie procedury: (sama procedury wykonuje polecenie DELETE)
   let id = kontrahent_id;
        fetch('http://XXX.XXX.XXX.XXX:3333/kontrahent_usun', {
            method: 'DELETE',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify({ id }),
        })
            .then(response => {
                return response.text();
            })
            .then(data => {
                if (data === 'wykonano') {
                    this.setState({ komunikat_pokaz_success: true })
                    this.props.ukryj()
                }
            } )
            .catch((error) => {
                this.setState({komunikat_pokaz_error: true});
              });

1 użytkowników online, w tym zalogowanych: 0, gości: 1