คำถามติดแท็ก stored-procedures

รูทีนย่อยพร้อมใช้งานสำหรับแอ็พพลิเคชันที่เข้าถึงระบบฐานข้อมูลเชิงสัมพันธ์

10
อะไรคือความแตกต่างระหว่างขั้นตอนการจัดเก็บและมุมมอง?
ฉันสับสนเกี่ยวกับบางประเด็น: อะไรคือความแตกต่างระหว่างขั้นตอนการจัดเก็บและมุมมอง? ฉันควรใช้กระบวนงานที่เก็บไว้เมื่อใดและฉันควรใช้มุมมองใน SQL Server เมื่อใด มุมมองอนุญาตให้สร้างแบบสอบถามแบบไดนามิกที่เราสามารถส่งผ่านพารามิเตอร์ได้หรือไม่ อันไหนเร็วที่สุดและอันไหนเร็วกว่ากัน? มุมมองหรือขั้นตอนที่จัดเก็บจัดสรรหน่วยความจำอย่างถาวรหรือไม่? หมายความว่าอย่างไรถ้ามีคนบอกว่ามุมมองสร้างตารางเสมือนในขณะที่โพรซีเดอร์สร้างตารางวัสดุ โปรดแจ้งให้เราทราบเกี่ยวกับคะแนนเพิ่มเติมหากมี

2
การเรียกซ้ำสูงสุด 100 หมดลงก่อนที่คำสั่งจะเสร็จสมบูรณ์
ฉันได้รับmax recursion errorคำถามนี้เรื่อย ๆ ตอนแรกฉันคิดว่าเป็นเพราะมีการส่งคืนค่าว่างจากนั้นมันจะพยายามจับคู่ค่าว่างทำให้เกิดข้อผิดพลาดอย่างไรก็ตามฉันเขียนแบบสอบถามของฉันใหม่เพื่อไม่ให้ค่าว่างกลับมาและข้อผิดพลาดยังคงเกิดขึ้น อะไรคือวิธีที่ดีที่สุดในการเขียนฟังก์ชันนี้ใหม่เพื่อไม่ให้เกิดข้อผิดพลาด WITH EmployeeTree AS ( SELECT EMP_SRC_ID_NR Id, USR_ACV_DIR_ID_TE Uuid, CASE Employees.APV_MGR_EMP_ID WHEN Null THEN '0' ELSE Employees.APV_MGR_EMP_ID END as ApprovalManagerId FROM dbo.[tEmployees] as Employees WITH (NOLOCK) WHERE APV_MGR_EMP_ID = @Id and Employees.APV_MGR_EMP_ID is not null and Employees.EMP_SRC_ID_NR is not null UNION ALL SELECT EMP_SRC_ID_NR …

6
เรียกกระบวนงานที่เก็บไว้พร้อมพารามิเตอร์ใน c #
ฉันสามารถลบแทรกและอัปเดตในโปรแกรมของฉันและฉันพยายามแทรกโดยเรียกขั้นตอนการจัดเก็บที่สร้างขึ้นจากฐานข้อมูลของฉัน นี่คือปุ่มแทรกฉันทำให้ทำงานได้ดี private void btnAdd_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(dc.Con); SqlCommand cmd = new SqlCommand("Command String", con); da.InsertCommand = new SqlCommand("INSERT INTO tblContacts VALUES (@FirstName, @LastName)", con); da.InsertCommand.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text; da.InsertCommand.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLastName.Text; con.Open(); da.InsertCommand.ExecuteNonQuery(); con.Close(); dt.Clear(); da.Fill(dt); } นี่คือจุดเริ่มต้นของปุ่มเพื่อเรียกขั้นตอนการตั้งชื่อsp_Add_contactเพื่อเพิ่มผู้ติดต่อ sp_Add_contact(@FirstName,@LastName)ทั้งสองพารามิเตอร์สำหรับการ ฉันค้นหาด้วย google สำหรับตัวอย่างที่ดี …

6
Mysql - วิธีการออก / ออกจากขั้นตอนที่เก็บไว้
ฉันมีคำถามง่ายๆ แต่ฉันไม่ได้รับรหัสง่ายๆในการออกจาก SP โดยใช้ Mysql ใครช่วยแชร์วิธีทำด้วยค่ะ CREATE PROCEDURE SP_Reporting(IN tablename VARCHAR(20)) BEGIN IF tablename IS NULL THEN #Exit this stored procedure here END IF; #proceed the code END;

11
วิธีตรวจสอบว่ามีกระบวนงานที่จัดเก็บไว้แล้วหรือไม่
ฉันต้องเขียนสคริปต์การปรับใช้ซึ่งจะทำงานได้หากมีโพรซีเดอร์ที่เก็บอยู่หรือไม่มีอยู่ กล่าวคือถ้ามีอยู่ฉันจำเป็นต้องแก้ไขมิฉะนั้นจะสร้างมันขึ้นมา ฉันจะทำสิ่งนี้ใน sql ได้อย่างไร ฉันใช้ SQL Server 2005

5
เก็บผลลัพธ์การสืบค้นในตัวแปรโดยใช้ใน PL / pgSQL
วิธีกำหนดผลลัพธ์ของแบบสอบถามให้กับตัวแปรใน PL / pgSQL ซึ่งเป็นภาษาขั้นตอนของ PostgreSQL ฉันมีฟังก์ชั่น: CREATE OR REPLACE FUNCTION test(x numeric) RETURNS character varying AS $BODY$ DECLARE name character varying(255); begin name ='SELECT name FROM test_table where id='||x; if(name='test')then --do somthing else --do the else part end if; end; return -- return my process result here $BODY$ LANGUAGE …

10
ฉันจะตรวจสอบได้อย่างไรว่ามีมุมมองอยู่ในฐานข้อมูลหรือไม่
ฉันมีโค้ด SQL ที่ต้องดำเนินการหากมีมุมมองบางอย่างอยู่ในฐานข้อมูล ฉันจะตรวจสอบได้อย่างไรว่ามี View อยู่หรือไม่ แก้ไข: DBMS ที่ใช้คือ Microsoft SQL Server

15
การเรียงลำดับแบบไดนามิกภายใน SQL Stored Procedures
นี่เป็นปัญหาที่ฉันใช้เวลาหลายชั่วโมงในการค้นคว้าในอดีต สำหรับฉันแล้วดูเหมือนว่าจะเป็นสิ่งที่ควรได้รับการแก้ไขโดยโซลูชันRDBMS ที่ทันสมัยแต่ฉันยังไม่พบสิ่งใดที่ตอบสนองสิ่งที่ฉันเห็นว่าเป็นความต้องการทั่วไปอย่างไม่น่าเชื่อในเว็บหรือแอปพลิเคชัน Windows ที่มีฐานข้อมูลส่วนหลัง ฉันพูดถึงการเรียงลำดับแบบไดนามิก ในโลกแฟนตาซีของฉันมันควรจะเรียบง่ายเหมือนกับ: ORDER BY @sortCol1, @sortCol2 นี่คือตัวอย่างมาตรฐานที่กำหนดโดยผู้พัฒนา SQL มือใหม่และStored Procedureทั่วฟอรัมต่างๆบนอินเทอร์เน็ต "ทำไมถึงทำไม่ได้" พวกเขาถาม. ในที่สุดก็มีใครบางคนมาบรรยายเกี่ยวกับลักษณะการรวบรวมของขั้นตอนการจัดเก็บแผนการดำเนินการโดยทั่วไปและเหตุผลอื่น ๆ อีกมากมายว่าทำไมจึงไม่สามารถใส่พารามิเตอร์ลงในORDER BYประโยคได้โดยตรง ฉันรู้ว่าพวกคุณบางคนกำลังคิดอะไรอยู่แล้ว: "ให้ลูกค้าจัดการเรียงลำดับ" โดยปกติแล้วสิ่งนี้จะลดการทำงานออกจากฐานข้อมูลของคุณ ในกรณีของเราเซิร์ฟเวอร์ฐานข้อมูลของเราไม่ได้ทำลายเหงื่อ 99% ของเวลาและยังไม่ได้เป็นแบบมัลติคอร์หรือการปรับปรุงสถาปัตยกรรมระบบอื่น ๆ อีกมากมายที่เกิดขึ้นทุกๆ 6 เดือน ด้วยเหตุนี้เพียงอย่างเดียวการมีฐานข้อมูลของเราจัดการกับการเรียงลำดับจะไม่เป็นปัญหา นอกจากนี้ฐานข้อมูลเป็นอย่างมากเก่งในการจัดเรียง พวกเขาได้รับการปรับให้เหมาะสมและใช้เวลาหลายปีในการทำให้ถูกต้องภาษาที่ใช้ทำนั้นมีความยืดหยุ่นใช้งานง่ายและเรียบง่ายและเหนือสิ่งอื่นใดนักเขียน SQL มือใหม่รู้วิธีการทำและที่สำคัญยิ่งกว่านั้นพวกเขารู้วิธีแก้ไข ทำการเปลี่ยนแปลงทำการบำรุงรักษา ฯลฯ เมื่อฐานข้อมูลของคุณห่างไกลจากการถูกเก็บภาษีและคุณเพียงแค่ต้องการลดความซับซ้อนของเวลาในการพัฒนา (และย่น!) สิ่งนี้ดูเหมือนจะเป็นทางเลือกที่ชัดเจน แล้วมีปัญหาเว็บ ฉันได้เล่นกับ JavaScript ที่จะทำการจัดเรียงตาราง HTML ฝั่งไคลเอ็นต์ แต่ก็ไม่สามารถยืดหยุ่นได้เพียงพอสำหรับความต้องการของฉันและอีกครั้งเนื่องจากฐานข้อมูลของฉันไม่ได้เก็บภาษีมากเกินไปและสามารถจัดเรียงได้อย่างง่ายดายจริงๆฉัน มีช่วงเวลาที่ยากลำบากในการระบุเวลาที่ต้องใช้ในการเขียนซ้ำหรือม้วนตัวเรียงลำดับ JavaScript …

16
คุณดีบักขั้นตอนการจัดเก็บ MySQL อย่างไร
ขั้นตอนปัจจุบันของฉันสำหรับการดีบักโพรซีเดอร์ที่จัดเก็บนั้นง่ายมาก ฉันสร้างตารางที่เรียกว่า "debug" ซึ่งฉันแทรกค่าตัวแปรจากโพรซีเดอร์ที่เก็บไว้ในขณะที่รัน สิ่งนี้ช่วยให้ฉันเห็นค่าของตัวแปรใด ๆ ณ จุดที่กำหนดในสคริปต์ แต่มีวิธีที่ดีกว่าในการดีบักขั้นตอนการจัดเก็บ MySQL หรือไม่

3
พารามิเตอร์ทางเลือกใน SQL Server ที่จัดเก็บ proc?
ฉันกำลังเขียน procs ที่เก็บไว้ใน SQL Server 2008 และสงสัยว่าแนวคิดของพารามิเตอร์อินพุตที่เป็นทางเลือกนั้นเป็นไปได้หรือไม่? ฉันคิดว่าฉันสามารถส่งผ่านค่า NULL สำหรับพารามิเตอร์ที่ฉันไม่ต้องการใช้ตรวจสอบค่าใน proc ที่เก็บไว้แล้วนำสิ่งต่าง ๆ จากที่นั่น แต่ฉันสนใจว่าแนวคิดนี้มีอยู่ที่นี่หรือไม่ ขอบคุณ!

17
หลักการตั้งชื่อของคุณสำหรับขั้นตอนการจัดเก็บคืออะไร? [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดขึ้นมาใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันได้เห็นกฎต่างๆสำหรับการตั้งชื่อกระบวนงานที่เก็บไว้ บางคนนำหน้าชื่อ sproc ด้วย usp_ คนอื่น ๆ ใช้ตัวย่อของชื่อแอปและคนอื่น ๆ ยังมีชื่อเจ้าของ คุณไม่ควรใช้ sp_ ใน SQL Server เว้นแต่คุณจะตั้งใจจริง บางคนเริ่มต้นชื่อ proc ด้วยคำกริยา (Get, Add, Save, Remove) อื่น ๆ เน้นชื่อเอนทิตี ในฐานข้อมูลที่มี sprocs หลายร้อย sprocs อาจเป็นเรื่องยากมากที่จะเลื่อนดูและค้นหา sproc ที่เหมาะสมเมื่อคุณคิดว่ามีอยู่แล้ว รูปแบบการตั้งชื่อสามารถทำให้การค้นหา sproc ง่ายขึ้น คุณใช้หลักการตั้งชื่อหรือไม่? โปรดอธิบายและอธิบายเหตุผลที่คุณชอบมากกว่าตัวเลือกอื่น ๆ สรุปคำตอบ: ดูเหมือนว่าทุกคนจะสนับสนุนความสอดคล้องของการตั้งชื่อซึ่งอาจสำคัญกว่าที่ทุกคนจะต้องใช้รูปแบบการตั้งชื่อแบบเดียวกันมากกว่าที่จะใช้ คำนำหน้า: …

15
ฉันจะค้นหาฐานข้อมูล SQL Server สำหรับสตริงได้อย่างไร
ฉันรู้ว่ามันเป็นไปได้ แต่ฉันไม่รู้วิธี ฉันต้องการค้นหาฐานข้อมูล SQL Server สำหรับการกล่าวถึงสตริงเฉพาะทั้งหมด ตัวอย่างเช่นฉันต้องการค้นหาตารางมุมมองฟังก์ชันกระบวนงานที่จัดเก็บไว้ทั้งหมด ... สำหรับสตริง "tblEmployes" (ไม่ใช่ข้อมูลภายในตาราง) หนึ่งในเหตุผลที่ฉันต้องการสิ่งนี้คือฉันต้องการลบตารางข้อมูลพิเศษบางตารางที่สร้างขึ้น แต่ฉันกลัวว่าอาจจะถูกใช้ในขั้นตอนหรือฟังก์ชันที่ใดที่หนึ่ง

9
จะแสดงรหัสโพรซีเดอร์ที่จัดเก็บแบบเต็มได้อย่างไร?
คุณดูกระบวนงาน / ฟังก์ชันที่จัดเก็บไว้อย่างไร? สมมติว่าฉันมีฟังก์ชันเก่าที่ไม่มีคำจำกัดความดั้งเดิม - ฉันต้องการดูว่ามันกำลังทำอะไรใน pg / psql แต่ดูเหมือนว่าฉันจะหาวิธีทำไม่ได้ ใช้ Postgres เวอร์ชัน 8.4.1

5
Entity Framework Code First รองรับกระบวนงานที่จัดเก็บไว้หรือไม่
ฉันได้ดูการนำเสนอ EF Code First หลายครั้งแล้วและยังไม่เห็นว่า EFCF ทำงานร่วมกับขั้นตอนการจัดเก็บอย่างไร ฉันจะประกาศวิธีการที่จะใช้ sp บางตัวได้อย่างไร? ฉันสามารถส่งเอนทิตีไปยังเมธอดที่เรียกใช้ sp โดยไม่ต้องแมปคุณสมบัติเอนทิตีกับพารามิเตอร์ sp ด้วยตนเองได้หรือไม่ นอกจากนี้จะเกิดอะไรขึ้นถ้าฉันเปลี่ยนรุ่นของฉัน? มันจะลด sp ของฉันในขณะที่สร้างตารางจากโมเดลใหม่หรือไม่? แล้วทริกเกอร์ล่ะ? หากสิ่งเหล่านี้ไม่ได้รับการสนับสนุนมีแผนรองรับในอนาคตหรือไม่?

8
C # SQL Server - ส่งผ่านรายการไปยังโพรซีเดอร์ที่เก็บไว้
ฉันกำลังเรียกใช้กระบวนงานที่จัดเก็บ SQL Server จากรหัส C # ของฉัน: using (SqlConnection conn = new SqlConnection(connstring)) { conn.Open(); using (SqlCommand cmd = new SqlCommand("InsertQuerySPROC", conn)) { cmd.CommandType = CommandType.StoredProcedure; var STableParameter = cmd.Parameters.AddWithValue("@QueryTable", QueryTable); var NDistanceParameter = cmd.Parameters.AddWithValue("@NDistanceThreshold", NDistanceThreshold); var RDistanceParameter = cmd.Parameters.AddWithValue(@"RDistanceThreshold", RDistanceThreshold); STableParameter .SqlDbType = SqlDbType.Structured; NDistanceParameter.SqlDbType = SqlDbType.Int; RDistanceParameter.SqlDbType = …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.