---
schema_version: "1"
id: 32bc475fc36079e5f1e6ebc354f08c4d601ab254bcf65967dbd45b341337db20
title: โพรซีเยอร์ที่จัดเก็บไว้
collection: tableau
version: next
locale: th-th
portal_url: https://docs.salesforce.com/tableau/next/th-th/pro/desktop/connect_basic_stored_procedures.md
canonical_url: https://help.tableau.com/v0.0/pro/desktop/th-th/connect_basic_stored_procedures.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 7d4b31b3047e9b66057b805dec6ce116a890e0e01f979c7172802ce1f9c9159d
description: Use a stored procedure to define a database connection in Tableau, with database-specific constraints.
---
[ข้ามไปยังเนื้อหาหลัก](#main-content)

# ใช้โพรซีเยอร์ที่จัดเก็บไว้

โพรซีเยอร์ที่จัดเก็บไว้คือรูทีนย่อยที่แอปพลิเคชันซึ่งเข้าถึงระบบฐานข้อมูลเชิงสัมพันธ์สามารถใช้งานได้ เมื่อคุณเชื่อมต่อกับ SAP Sybase ASE, Microsoft SQL Server หรือฐานข้อมูล Teradata ด้วย Tableau คุณสามารถใช้โพรซีเยอร์ที่จัดเก็บไว้เพื่อกำหนดการเชื่อมต่อได้

สำหรับ Oracle คุณสามารถใช้ฟังก์ชันตารางเพื่อกำหนดการเชื่อมต่อได้ ฟังก์ชันตารางของ Oracle จะทำหน้าที่เหมือนโพรซีเยอร์ที่จัดเก็บไว้และระบุไว้ภายใต้โพรซีเยอร์ที่จัดเก็บไว้ในหน้าแหล่งข้อมูล

เมื่อคุณสร้างแหล่งข้อมูลด้วยข้อมูลประเภทต่างๆ เหล่านี้ โพรซีเยอร์ที่สามารถใช้งานได้จะระบุไว้ภายใต้โพรซีเยอร์ที่จัดเก็บไว้ ดังที่ปรากฏในตัวอย่างของ Microsoft SQL Server ดังนี้

![รายการโพรซีเยอร์ที่จัดเก็บไว้ที่พบในแผงข้อมูล](/tableau/next/th-th/pro/desktop/th-th/Img/stored_procedures1.png)

จากบานหน้าต่างด้านซ่าย ให้ลากโพรซีเยอร์ไปยังแคนวาสหรือดับเบิลคลิกที่โพรซีเยอร์รายการใดรายการหนึ่งที่ระบุไว้ หากโพรซีเยอร์มีพารามิเตอร์ให้ใช้งาน พารามิเตอร์จะแสดงกล่องโต้ตอบขึ้นมาโดยอัตโนมัติ 

คุณสามารถใช้พารามิเตอร์ Tableau เดิมหรือสร้างพารามิเตอร์ Tableau ขึ้นใหม่แทนการป้อนค่าได้ดังนี้

![ตารางพารามิเตอร์ประเภทข้อมูล](/tableau/next/th-th/pro/desktop/th-th/Img/stored_procedures3.png)

หากคุณเปิดเผยพารามิเตอร์ Tableau ในมุมมอง ผู้ใช้จะสามารถเปลี่ยนแปลงค่าของพารามิเตอร์ในโพรซีเยอร์แบบโต้ตอบได้

โพรซีเยอร์ที่จัดเก็บไว้ไม่รองรับการรวมศูนย์ การเชื่อมโยง หรือการผนวก โพรซีเยอร์เหล่านี้จะแสดงในตารางตรรกะเดียวในชั้นทางตรรกศาสตร์ และไม่อนุญาตให้เปิดแคนวาสการผนวก/การรวม (ชั้นทางกายภาพ)

## หมายเหตุเกี่ยวกับโพรซีเยอร์ที่จัดเก็บไว้

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

- หากโพรซีเยอร์ที่จัดเก็บไว้ส่งคืนเซตผลลัพธ์มากกว่าหนึ่งรายการ Tableau จะอ่านผลลัพธ์รายการแรกและข้ามรายการที่เหลือ
- หากโพรซีเยอร์ที่จัดเก็บไว้มีพารามิเตอร์เอาต์พุต Tableau จะกรองโพรซีเยอร์ที่จัดเก็บไว้ออก
- โพรซีเยอร์ที่จัดเก็บไว้ซึ่งมีพารามิเตอร์ประเภทไม่ใช่สเกลาร์จะถูกยกเว้น
- คอลัมน์เซ็ตผลลัพธ์ที่ไม่ใช่ประเภทที่ตรงกันใน Tableau (เช่น วาร์ไบนารี เรขาคณิต ลำดับชั้น) จะถูกบันทึกไว้ หากคอลัมน์เซ็ตผลลัพธ์ทุกรายการได้แมปประเภทข้อมูลที่ไม่รู้จัก Tableau จะแสดงข้อความดังนี้
    
    "เซตผลลัพธ์... ไม่มีคอลัมน์ที่ใช้งานได้"
- โพรซีเยอร์ที่จัดเก็บไว้ซึ่งไม่ส่งคืนเซตผลลัพธ์จะถูกระบุไว้ในหน้าแหล่งข้อมูล ซึ่งหากเลือกจะทำให้เกิดการล้มเหลว
- หากไม่มีการระบุค่าให้พารามิเตอร์ที่โพรซีเยอร์ที่จัดเก็บไว้ต้องใช้งาน จะทำให้เกิดข้อผิดพลาด Tableau ไม่สามารถกำหนดล่วงหน้าได้ว่าต้องใช้พารามิเตอร์ใดบ้าง
- Tableau จะไม่ดำเนินการจัดการธุรกรรมใดๆ สำหรับโพรซีเยอร์ที่จัดเก็บไว้ ซึ่งผู้เขียนโพรซีเยอร์ที่จัดเก็บไว้จะต้องไม่พึ่งพา Tableau เพื่อเริ่มต้นธุรกรรมก่อนเรียกใช้โพรซีเยอร์ที่จัดเก็บไว้ หรือดำเนินการดังกล่าวหลังจากนั้น
- ชื่อคอลัมน์ของโพรซีเยอร์ที่จัดเก็บไว้ที่ใช้เพื่อทำงานจะต้องไม่ซ้ำกัน หากคอลัมน์ทั้งสองคอลัมน์มีชื่อเดียวกันหรือไม่ได้ระบุชื่อไว้ โพรซีเยอร์อาจเกิดข้อผิดพลาดขึ้นได้
- หากมีการค้นหาหลายรายการในโพรซีเยอร์ที่จัดเก็บไว้ (ตัวอย่างเช่น หากต้องการอ่านค่าจากตารางอื่น หรือเพื่อจัดเก็บชุดค่าผสมไว้ถาวร) การค้นหาแต่ละรายการต้องส่งคืนชุดคอลัมน์เดียวกันในลำดับเดียวกัน (ชื่อและประเภทข้อมูลเดียวกัน) หากต้องการรับประกันว่าลำดับของคอลัมน์และชื่อตรงกันในผลลัพธ์การค้นหา คุณจำเป็นต้องตั้งชื่อ `CAST` ให้ชัดเจนเพื่อรับประกันว่าประเภทข้อมูลนั้นถูกต้อง เช่น `CAST(Username as VARCHAR(20))` และตั้งชื่อคอลัมน์ให้ชัดเจนด้วย หากโพรซีเยอร์ที่จัดเก็บไว้ไม่เป็นไปตามคำแนะนำดังกล่าว ข้อความแสดงข้อผิดพลาดอาจปรากฏขึ้นดังนี้
    
    "InsertData: ข้อผิดพลาดคอลัมน์ unbound"
- หากมีการค้นหาหลายรายการในโพรซีเยอร์ที่จัดเก็บไว้ (ตัวอย่างเช่น หากต้องการอ่านค่าจากตารางอื่น หรือเพื่อจัดเก็บชุดค่าผสมไว้ถาวร) และโพรซีเยอร์ได้สร้างข้อผิดพลาดขึ้นมาอย่างต่อเนื่อง ให้ลองเพิ่ม `SET NOCOUNT ON` ตรงส่วนบนสุดของโพรซีเยอร์ การดำเนินการเช่นนี้จะเป็นการป้องกันข้อความที่แสดงการนับจำนวนแถวที่ได้รับผลกระทบจากคำสั่ง Transact-SQL จากการส่งคืนโดยเป็นส่วนหนึ่งของเซตผลลัพธ์สำหรับการสืบค้น

โดยข้อจำกัดต่อไปนี้ยังใช้กับฐานข้อมูลบางรายการอีกด้วย

### ข้อจำกัดของโพรซีเยอร์ที่จัดเก็บไว้สำหรับฐานข้อมูล Teradata

ข้อจำกัดต่อไปนี้ใช้กับโพรซีเยอร์ที่จัดเก็บไว้บนฐานข้อมูล Teradata

- ต้องมีการระบุค่าสำหรับทุกพารามิเตอร์ หากผู้ใช้ไม่ได้ระบุค่าสำหรับพารามิเตอร์อย่างน้อยหนึ่งรายการ Tableau จะแสดงข้อผิดพลาดของฐานข้อมูล Teradata ที่ระบุว่ามีการกำหนดค่าสำหรับโพรซีเยอร์ที่จัดเก็บไว้น้อยเกินไป

### ข้อจำกัดของโพรซีเยอร์ที่จัดเก็บไว้สำหรับฐานข้อมูล SQL Server

ข้อจำกัดต่อไปนี้ใช้กับโพรซีเยอร์ที่จัดเก็บไว้บนฐานข้อมูล SQL Server

- หากเซตผลลัพธ์สำหรับโพรซีเยอร์ที่จัดเก็บไว้มีคอลัมน์ของประเภท IMAGE หรือ TEXT โพรซีเยอร์ที่จัดเก็บไว้จะล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดที่ว่า "ไวยากรณ์ไม่ถูกต้อง"
- หากความกว้างโดยรวมของเซตผลลัพธ์ (จำนวนไบต์ในแต่ละแถว) เกินกว่า 8060 โพรซีเยอร์ที่จัดเก็บไว้จะล้มเหลว ซึ่งสามารถเกิดได้กับตารางที่กว้างเป็นอย่างมาก (กว่าร้อยคอลัมน์) หรือกับตารางที่มีคอลัมน์ข้อความขนาดใหญ่ซึ่งใช้เพื่อจัดเก็บข้อความกว่าพันตัวอักษร
- Tableau จะไม่แสดงโพรซีเยอร์ที่จัดเก็บไว้จากสคีมา "sys"
- หากผู้ใช้ไม่ระบุค่าในพารามิเตอร์ที่โพรซีเยอร์ต้องใช้งานมากกว่าหนึ่งรายการ Tableau จะแสดงข้อผิดพลาดของฐานข้อมูล SQL Server ในรูปแบบ "โพรซีเยอร์ต้องใช้ค่าสำหรับพารามิเตอร์ @x แต่กลับไม่มีการระบุไว้"
- โพรซีเยอร์ที่จัดเก็บไว้ที่มีการสืบค้นหลายรายการจะต้องเป็นไปตามคำแนะนำที่ระบุไว้ในหมายเหตุเกี่ยวกับโพรซีเยอร์ที่จัดเก็บไว้ (ข้างต้น)
- Tableau Desktop ไม่รองรับประเภทข้อมูล TIME ของ Microsoft SQL Server เมื่อมีการเพิ่มข้อมูลในฟิลด์ประเภทนี้ในโพรซีเยอร์ที่จัดเก็บไว้บนฐานข้อมูล Microsoft SQL Server จะส่งผลให้ Tableau Desktop ไม่นำเข้าข้อมูลดังกล่าว

### ข้อจำกัดของโพรซีเยอร์ที่จัดเก็บไว้สำหรับฐานข้อมูล SAP Sybase ASE 

ข้อจำกัดต่อไปนี้ใช้กับโพรซีเยอร์ที่จัดเก็บไว้บนฐานข้อมูล SAP Sybase ASE (เฉพาะ Windows เท่านั้น)

- ฐานข้อมูลต้องมีเซิร์ฟเวอร์ระยะไกลที่กำหนดค่าไว้อย่างเหมาะสม
- หากผู้ใช้ไม่ระบุค่าในพารามิเตอร์ที่โพรซีเยอร์ต้องใช้งานมากกว่าหนึ่งรายการ Tableau จะแสดงข้อผิดพลาดของฐานข้อมูล Sybase ASE ในรูปแบบ "โพรซีเยอร์ต้องใช้ค่าสำหรับพารามิเตอร์ @x แต่กลับไม่มีการระบุไว้"