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
'sourcecode' 카테고리의 다른 글
Oracle SQL을 사용한 트랜잭션은 어떻게 사용합니까? (0) | 2023.08.17 |
---|---|
화면 방향 변경 시 사용자 정의 보기의 상태 손실을 방지하는 방법 (0) | 2023.08.17 |
github에 커밋을 푸시할 때 git가 실패함 (0) | 2023.08.17 |
VS 디버그 모드 중에 ip:port를 사용하여 WEB API에 액세스할 수 없지만 localhost:port를 사용하여 액세스할 수 있습니다. (0) | 2023.08.17 |
Visual Studio용 PowerShell 구문 강조 표시 또는 IntelliSense 플러그인을 찾은 사람? (0) | 2023.08.12 |