DBEXECUTEFIXED
DBEXECUTEFIXED เป็นทางเลือกแทน DBEXECUTE ที่รองรับพารามิเตอร์ต่างๆ ต่างจาก DBEXECUTE ตรงที่สามารถใช้ได้ทั้งในสภาพแวดล้อมแบบคลาวด์และแบบภายในองค์กร และในแอปพลิเคชันแบบกำหนดเองหรือแบบขยาย
คำสั่ง SQL ถือเป็นข้อความคงที่ ดังนั้นจึงไม่สามารถอ้างอิงตัวแปรได้โดยตรง
ถ้าคำสั่งอยู่ในเซลล์ที่ไม่มีการป้องกัน คุณสามารถอัปเดตค่าที่ส่งกลับได้ แต่ในทางตรงกันข้ามกับ DBEXECUTE คุณไม่สามารถเพิ่มแถวใหม่ได้
ชื่อพารามิเตอร์จะคำนึงถึงขนาดตัวพิมพ์
ไวยากรณ์
สูตร DBEXECUTEFIXED มีพารามิเตอร์ต่างๆ เหล่านี้
- นามแฝง: ซึ่งพารามิเตอร์เหล่านี้ระบุการเชื่อมต่อข้อมูลเชิงสัมพันธ์ที่กำหนดไว้ใน d/EPM Administration
- เลือกคำสั่ง: ใช้เพื่อดึงข้อมูลจากฐานข้อมูล เป็นคำสั่ง SQL SELECT มาตรฐาน เมื่อต้องการเปิดใช้งานการปรับปรุงฐานข้อมูล คำร้องต้องมีคีย์หลัก SQL SELECT สามารถคืนค่าได้หลายค่าจากแถวหนึ่ง แต่ DBEXECUTEFIXED จะละเว้นทั้งหมดยกเว้นค่าแรก ดังนั้น ในการส่งคืนและเขียนกลับค่าที่ไม่ใช่คีย์หลัก ตรวจสอบให้แน่ใจว่าคีย์หลักไม่ใช่ค่าแรกที่ร้องขอโดยคำสั่ง สำหรับการเขียนกลับ เซลล์ที่มีคำร้องจะต้องไม่มีการป้องกัน
- ค่าพารามิเตอร์: คุณสามารถใช้พารามิเตอร์ค่าเดียวและหลายค่าได้ ในคำสั่ง SQL ให้อ้างอิงพารามิเตอร์ค่าเดียวด้วย
@[parameter_name]
อ้างอิงพารามิเตอร์หลายค่าด้วย@@[parameter_name]
ค่าในพารามิเตอร์หลายค่าต้องคั่นด้วยอักขระไปป์(|)
=DBEXECUTEFIXED("alias", "select_statement", {, "parameter"})
ชื่อพารามิเตอร์ถูกกำหนดโดยอัตโนมัติเป็น p1, p2 ฯลฯ
ตัวอย่าง
ในตัวอย่างนี้ สูตรจะส่งคืนชื่อรายการที่ ID มีค่าอยู่ในตัวแปรรายงาน rv_configs ในปัจจุบัน items.ID
เป็นคีย์หลัก
=DBEXECUTEFIXED("configdb", "SELECT items.name,items.ID FROM items WHERE Id=@p1",ReportVariables.rv_configs.Text)
items.id
เป็นคีย์หลัก ถ้าสูตรอยู่ในเซลล์ที่ไม่ได้รับการป้องกันและส่งกลับค่า คุณสามารถอัปเดตค่าได้: ในตัวอย่างนี้คือ ชื่อรายการ
เนื่องจากคำสั่ง SQL ทั้งหมดถือเป็นข้อความ จึงไม่มีความจำเป็นต้องเชื่อมค่าสตริงด้วยอักขระ &
เช่นที่จำเป็นต้องใช้ในสูตร DBEXECUTE เหล่านี้:
=DBEXECUTE("configdb", "SELECT items.name,items.ID FROM items WHERE Id="&ReportVariables.rv_configs.Text)
=DBEXECUTE("configdb", "SELECT items.ID,items.name FROM items WHERE name='"&ReportVariables.rv_name.Text&"'")
ไวยากรณ์ของการต่อเชื่อมต่างกันเพราะในตัวอย่างแรก ค่าอ้างอิงเป็นตัวเลข และในตัวอย่างที่สองคือข้อความ