Как вызвать хранимую процедуру в NestJs + TypeOrm (Backend) - PullRequest
0 голосов
/ 21 ноября 2018

Я сохранил процедуру в базе данных Oracle и хочу вызвать ее в NestJs.Как вызвать хранимую процедуру в NestJs?

Это моя хранимая процедура

PROCEDURE pipeline_critical (
        i_main_company IN NUMBER,
        o_value OUT NUMBER
   ) AS
   BEGIN
    SELECT COUNT(A.PIPELINE_ID) AS IGNORED_PIPELINE 
    INTO o_value
    FROM T_PIPELINE A
    LEFT JOIN T_PIPELINE_PRODUCT P ON P.PIPELINE_ID = A.PIPELINE_ID
    WHERE 
        1 = ( CASE WHEN
                i_main_company <> 3
                AND A.MAIN_COMPANY_ID = i_main_company
                AND TO_CHAR(A.EST_DELIVERY,'YYYY') >= TO_CHAR(SYSDATE,'YYYY') - 1
                AND A.PIPELINE_STATUS_ID IN (1,2,3)
                AND TO_CHAR(ADD_MONTHS(A.UPDATE_DATE,3),'YYYYMM') < TO_CHAR(SYSDATE,'YYYYMM')
                AND P.PAID_DATE IS NULL THEN 1
            WHEN
                i_main_company = 3
                AND TO_CHAR(A.EST_DELIVERY,'YYYY') >= TO_CHAR(SYSDATE,'YYYY') - 1
                AND A.PIPELINE_STATUS_ID IN (1,2,3)
                AND TO_CHAR(ADD_MONTHS(A.UPDATE_DATE,3),'YYYYMM') < TO_CHAR(SYSDATE,'YYYYMM')
                AND P.PAID_DATE IS NULL THEN 1
            END
        );
   END pipeline_critical;

1 Ответ

0 голосов
/ 01 мая 2019

Я мигрирую Javascript / sequealize Backend и проверяю свои потребности.Это простой пример, который мне подходит:

Это хранимая процедура

CREATE PROCEDURE sp_prueba
@email varchar(100)
AS
BEGIN
    SET NOCOUNT ON;
    select * from tbusua where emai_usua=@email
END

В NESTJS - Controller

import { Controller, Get, Param } from '@nestjs/common';
import { UsuariosService } from './usuarios.service';
import { async } from 'rxjs/internal/scheduler/async';
import { Usuario } from './usuarios.entity';


@Controller('Usuarios')
export class UsuariosController {
constructor(private readonly UsuariosService: UsuariosService) { }
@Get('/:email')
async find(@Param('email') email): Promise <Usuario[]>{
    return await this.UsuariosService.find(email);
}

}

Ив NESTJS - бэкэнд TypeORM в сервисе

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Usuario } from './usuarios.entity';
import { Repository, Db, EntityManager } from 'typeorm';

@Injectable()
export class UsuariosService {
constructor(
    @InjectRepository(Usuario)
    private readonly usuariosRepository: Repository<Usuario>) { }
 async find(email: string): Promise<Usuario[]>{
    return await this.usuariosRepository.query("sp_prueba @email='"+email +"'");
 }
}

эта работа для меня

...