คำถามติดแท็ก dynamic-sql

19
ทำไมบางคนจะใช้ WHERE 1 = 1 AND <conditions> ในประโยค SQL?
เหตุใดจึงมีคนใช้WHERE 1=1 AND &lt;conditions&gt;ในประโยค SQL (ทั้ง SQL ที่ได้รับผ่านสตริงที่ต่อกัน, นิยามมุมมองทั้งสอง) ฉันเคยเห็นที่ไหนสักแห่งว่าสิ่งนี้จะถูกใช้เพื่อป้องกันการฉีด SQL แต่มันดูแปลกมาก หากมีการฉีดจะมีผลเช่นเดียวกับWHERE 1 = 1 AND injected OR 1=1injected OR 1=1 แก้ไขในภายหลัง: แล้วการใช้งานในนิยามมุมมองล่ะ ขอบคุณสำหรับคำตอบ ถึงกระนั้นฉันก็ยังไม่เข้าใจว่าทำไมบางคนถึงใช้โครงสร้างนี้เพื่อกำหนดมุมมองหรือใช้ภายในขั้นตอนการจัดเก็บ ยกตัวอย่างเช่น CREATE VIEW vTest AS SELECT FROM Table WHERE 1=1 AND table.Field=Value
257 sql  dynamic-sql 

10
วิธีรับ sp_executesql ส่งผลให้เกิดตัวแปร?
ฉันมี SQL ไดนามิกที่จำเป็นต้องใช้ในการประมวลผลจากนั้นฉันต้องเก็บผลลัพธ์ไว้ในตัวแปร ฉันรู้ว่าฉันสามารถใช้sp_executesqlแต่ไม่สามารถหาตัวอย่างที่ชัดเจนเกี่ยวกับวิธีการทำเช่นนี้
178 tsql  dynamic-sql 

10
การตัดทอนตารางทั้งหมดในฐานข้อมูล Postgres
ฉันต้องลบข้อมูลทั้งหมดออกจากฐานข้อมูล PostgreSQL เป็นประจำก่อนทำการสร้างใหม่ ฉันจะทำสิ่งนี้โดยตรงใน SQL ได้อย่างไร ในขณะที่ฉันจัดการเพื่อให้มากับคำสั่ง SQL ที่คืนคำสั่งทั้งหมดที่ฉันต้องดำเนินการ: SELECT 'TRUNCATE TABLE ' || tablename || ';' FROM pg_tables WHERE tableowner='MYUSER'; แต่ฉันไม่เห็นวิธีเรียกใช้งานโดยทางโปรแกรมเมื่อมี

14
วางตารางทั้งหมดที่ชื่อขึ้นต้นด้วยสตริงที่แน่นอน
ฉันจะวางตารางทั้งหมดที่ชื่อขึ้นต้นด้วยสตริงที่กำหนดได้อย่างไร ฉันคิดว่าสิ่งนี้สามารถทำได้กับ SQL แบบไดนามิกและINFORMATION_SCHEMAตาราง

7
ฟิลด์อัพเดต SQL ของตารางหนึ่งจากฟิลด์ของอีกตารางหนึ่ง
ฉันมีสองโต๊ะ: A [ID, column1, column2, column3] B [ID, column1, column2, column3, column4] Aจะเป็นส่วนย่อยของเสมอB(หมายถึงคอลัมน์ทั้งหมดAอยู่ในด้วยB) ฉันต้องการที่จะปรับปรุงการบันทึกที่มีเฉพาะที่IDอยู่ในBที่มีข้อมูลของพวกเขาจากคอลัมน์ทั้งหมดA Aสิ่งนี้IDมีอยู่ทั้งในAและB. มีUPDATEไวยากรณ์หรือวิธีอื่นใดที่ทำได้โดยไม่ต้องระบุชื่อคอลัมน์เพียงพูดว่า"set all column of A" ? ฉันใช้ PostgreSQL ดังนั้นจึงยอมรับคำสั่งที่ไม่ได้มาตรฐาน (อย่างไรก็ตามไม่แนะนำ)

10
สร้าง PostgreSQL ROLE (ผู้ใช้) หากไม่มีอยู่
ฉันจะเขียนสคริปต์ SQL เพื่อสร้าง ROLE ใน PostgreSQL 9.1 ได้อย่างไร แต่จะไม่เกิดข้อผิดพลาดหากมีอยู่แล้ว สคริปต์ปัจจุบันมี: CREATE ROLE my_user LOGIN PASSWORD 'my_password'; สิ่งนี้จะล้มเหลวหากมีผู้ใช้อยู่แล้ว ฉันต้องการสิ่งที่ต้องการ: IF NOT EXISTS (SELECT * FROM pg_user WHERE username = 'my_user') BEGIN CREATE ROLE my_user LOGIN PASSWORD 'my_password'; END; ... แต่ไม่ได้ผล - IFดูเหมือนจะไม่รองรับใน SQL ธรรมดา ฉันมีไฟล์แบตช์ที่สร้างฐานข้อมูล PostgreSQL 9.1 บทบาทและสิ่งอื่น ๆ อีกสองสามอย่าง เรียกว่า …

6
รับผลลัพธ์ของไดนามิก SQL เป็นตัวแปรสำหรับ sql-server
การเรียกใช้ไดนามิก SQL ดังต่อไปนี้ใน Stored Procedure: DECLARE @sqlCommand nvarchar(1000) DECLARE @city varchar(75) SET @city = 'London' SET @sqlCommand = 'SELECT COUNT(*) FROM customers WHERE City = @city' EXECUTE sp_executesql @sqlCommand, N'@city nvarchar(75)', @city = @city ฉันจะใช้ค่าคอลัมน์ count (*) เป็นค่าส่งคืนใน SP ได้อย่างไร

3
เหตุใดฉันจึงได้รับ“ ขั้นตอนคาดหวังพารามิเตอร์ '@statement' ประเภท 'ntext / nchar / nvarchar'” เมื่อฉันพยายามใช้ sp_executesql?
เหตุใดฉันจึงได้รับข้อผิดพลาดนี้ โพรซีเดอร์ต้องการพารามิเตอร์ '@statement' ของประเภท 'ntext / nchar / nvarchar' เมื่อฉันพยายามใช้sp_executesql?

4
ประกาศตัวแปรสำหรับสตริงการสืบค้น
ฉันสงสัยว่ามีวิธีทำใน MS SQL Server 2005 หรือไม่: DECLARE @theDate varchar(60) SET @theDate = '''2010-01-01'' AND ''2010-08-31 23:59:59''' SELECT AdministratorCode, SUM(Total) as theTotal, SUM(WOD.Quantity) as theQty, AVG(Total) as avgTotal, (SELECT SUM(tblWOD.Amount) FROM tblWOD JOIN tblWO on tblWOD.OrderID = tblWO.ID WHERE tblWO.Approved = '1' AND tblWO.AdministratorCode = tblWO.AdministratorCode AND tblWO.OrderDate BETWEEN @theDate ) …

8
ชื่อตารางเป็นพารามิเตอร์ฟังก์ชัน PostgreSQL
ฉันต้องการส่งชื่อตารางเป็นพารามิเตอร์ในฟังก์ชัน Postgres ฉันลองใช้รหัสนี้: CREATE OR REPLACE FUNCTION some_f(param character varying) RETURNS integer AS $$ BEGIN IF EXISTS (select * from quote_ident($1) where quote_ident($1).id=1) THEN return 1; END IF; return 0; END; $$ LANGUAGE plpgsql; select some_f('table_name'); และฉันได้รับสิ่งนี้: ERROR: syntax error at or near "." LINE 4: ...elect * from quote_ident($1) …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.