sourcecode

nodejs에서 MariaDB 준비 문 쿼리를 사용하는 방법은 무엇입니까?

copyscript 2023. 8. 17. 21:45
반응형

nodejs에서 MariaDB 준비 문 쿼리를 사용하는 방법은 무엇입니까?

저는 이 MariaDB가 node.js에서 실행할 수 있도록 준비된 문장을 만드는 방법을 찾고 있습니다.여기서 문제는 "MariaDB prepared statement in node.js" 검색어가 내가 찾고 있는 결과를 반환하지 않는다는 것입니다.

좀 더 자세히 설명하자면, 아래와 같이 MariaDB에 대한 설명문이 준비되어 있으며, 고용주가 요청한 맞춤형 보고서의 대부분에 사용하고 있습니다.

SET @columns := NULL;
SET @sql := NULL;
SET @df := '2022-01-07';
SET @dt := CURDATE();
SET @pc := 'barcode IN ("111", "222", "333")';

SELECT  GROUP_CONCAT(
        CASE WHEN seq=1 THEN
        CONCAT('SUM(CASE WHEN barcode="',barcode,'" then sold_qty else 0 END) AS "',
        product_name,' \r\n ---- \r\n Sold Qty"')
              WHEN seq=2 THEN
        CONCAT('SUM(CASE WHEN barcode="',barcode,'" then sales_amt else 0 END) AS "',
        product_name,'  \r\n ---- \r\n Sales Amt"') END SEPARATOR ', \r\n' ) INTO @columns
FROM products
CROSS JOIN (SELECT 1 seq UNION SELECT 2) s
WHERE barcode IN ("111", "222", "333");

SELECT CONCAT('SELECT sales_date,
',@columns,' 
FROM (',
       GROUP_CONCAT(
       CONCAT(
       '
       SELECT * FROM ',TABLE_NAME,' WHERE ',@pc) SEPARATOR ' \r\n UNION ALL \r\n'),
       ') v 
  WHERE sales_date >= "',@df,'"
  AND sales_date < "',@dt,'"
  GROUP BY sales_date;') into @sql
FROM information_schema.tables
WHERE table_name LIKE 'sales_tbl%'
  AND STR_TO_DATE(CONCAT(RIGHT(TABLE_NAME,6),'01'),'%Y%m%d') >= @df-INTERVAL 1 MONTH; 

기본적으로 피벗 쿼리를 생성하고 열을 생성하고 테이블을 정의합니다.UNION ALL) 동적으로.지금까지 제 node.js(또는 javascript) 지식은 아직 초보자 수준이기 때문에 이 준비된 문 쿼리를 있는 그대로 다시 만들려고 시도했지만 분명히 실패했습니다.그래도 왜 안 되는지는 이해합니다.SO에서 제 문제와 관련된 질문을 찾기 위해 여러 검색어를 시도했지만 찾을 수 없었습니다.

그 질문은 저에게 꽤 잘 맞아서 저는 별로 문제가 없습니다.단지, 저는 제 조직의 모든 사람이 사용할 수 있는 맞춤형 웹 보고서 앱을 개발하려고 합니다.

여기 참고용 바이올린이 있습니다.

추가 테스트 후 node.js에서 준비된 문을 있는 그대로 사용할 수 있지만 추가해야 합니다.multipleStatements: true이전 프로젝트에 이 방법을 사용했기 때문에 익숙한 node.js mysql 클라이언트의 경우, 그러나 이 설정을 사용하는 것이 정확하게 안전하지 않다는 것이 제 주의를 끌었습니다.이것에 대해서도 오래된 질문이 있습니다.제가 구축하고 있는 웹 앱이 내부 사용을 위한 것임에도 불구하고, 저는 안전하지 않은 관행을 사용하는 것을 막으려고 노력합니다.

언급URL : https://stackoverflow.com/questions/71476413/how-to-use-a-mariadb-prepared-statement-query-in-nodejs

반응형