DBEXECUTEFIXED

DBEXECUTEFIXED เป็นทางเลือกแทน DBEXECUTE ที่รองรับพารามิเตอร์ต่างๆ ต่างจาก DBEXECUTE ตรงที่สามารถใช้ได้ทั้งในสภาพแวดล้อมแบบคลาวด์และแบบภายในองค์กร และในแอปพลิเคชันแบบกำหนดเองหรือแบบขยาย

คำสั่ง SQL ถือเป็นข้อความคงที่ ดังนั้นจึงไม่สามารถอ้างอิงตัวแปรได้โดยตรง

ถ้าคำสั่งอยู่ในเซลล์ที่ไม่มีการป้องกัน คุณสามารถอัปเดตค่าที่ส่งกลับได้ แต่ในทางตรงกันข้ามกับ DBEXECUTE คุณไม่สามารถเพิ่มแถวใหม่ได้

หมายเหตุ

ชื่อพารามิเตอร์จะคำนึงถึงขนาดตัวพิมพ์

ไวยากรณ์

สูตร DBEXECUTEFIXED มีพารามิเตอร์ต่างๆ เหล่านี้

  1. นามแฝง: ซึ่งพารามิเตอร์เหล่านี้ระบุการเชื่อมต่อข้อมูลเชิงสัมพันธ์ที่กำหนดไว้ใน d/EPM Administration
  2. เลือกคำสั่ง: ใช้เพื่อดึงข้อมูลจากฐานข้อมูล เป็นคำสั่ง SQL SELECT มาตรฐาน เมื่อต้องการเปิดใช้งานการปรับปรุงฐานข้อมูล คำร้องต้องมีคีย์หลัก SQL SELECT สามารถคืนค่าได้หลายค่าจากแถวหนึ่ง แต่ DBEXECUTEFIXED จะละเว้นทั้งหมดยกเว้นค่าแรก ดังนั้น ในการส่งคืนและเขียนกลับค่าที่ไม่ใช่คีย์หลัก ตรวจสอบให้แน่ใจว่าคีย์หลักไม่ใช่ค่าแรกที่ร้องขอโดยคำสั่ง สำหรับการเขียนกลับ เซลล์ที่มีคำร้องจะต้องไม่มีการป้องกัน
  3. ค่าพารามิเตอร์: คุณสามารถใช้พารามิเตอร์ค่าเดียวและหลายค่าได้ ในคำสั่ง 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&"'")

ไวยากรณ์ของการต่อเชื่อมต่างกันเพราะในตัวอย่างแรก ค่าอ้างอิงเป็นตัวเลข และในตัวอย่างที่สองคือข้อความ