เป็นไปได้ไหมที่จะใช้ไวด์การ์ดในพารามิเตอร์ SQL Server Stored Proc

ฉันกำลังทำงานกับ Stored Proc โดยรับพารามิเตอร์หลายตัว ปรากฎว่าสำหรับพารามิเตอร์ตัวใดตัวหนึ่ง ฉันต้องวนซ้ำรายการต่างๆ และเรียก SP หลายครั้ง แต่เมื่อฉันส่ง SP ทุกค่าที่เป็นไปได้ของประเภทนั้น มันจะดูมีประสิทธิภาพมากกว่า (และง่ายกว่า) เพียงข้ามพารามิเตอร์โดยพูดว่า "รับพวกมันทั้งหมด" โดยใช้ไวด์การ์ด

เป็นไปได้ไหมที่จะทำเช่นนั้น เช่น ด้วย "*" หรือ "%" หรืออะไรสักอย่าง?

ตามทฤษฎี (จากการวิจัยที่ฉันทำ) "%" น่าจะใช้ได้ แต่ในกรณีของฉัน มันจะไม่ส่งคืนบันทึกใดๆ ฉันทำอะไรผิดด้วยรหัสนี้:

. . .
new SqlParameter()
{
    ParameterName = "@Member",
    SqlDbType = SqlDbType.VarChar,
    Value = '%'
},
. . .

?


person B. Clay Shannon    schedule 30.12.2015    source แหล่งที่มา
comment
เพียงส่งค่า NULL พร้อมพารามิเตอร์แล้วใช้ WHERE col = ISNULL(@param, col) หรือเพื่อประสิทธิภาพที่มากขึ้น WHERE col = @param or @param IS NULL   -  person Lukasz Szozda    schedule 30.12.2015
comment
ดูเหมือนว่าฉันต้องเพิ่มบางอย่างลงใน SP ซึ่งฉันทำไม่ได้ นั่นไม่ใช่โดเมนของฉัน (ไม่ได้ตั้งใจเล่นสำนวน)   -  person B. Clay Shannon    schedule 30.12.2015
comment
เหตุใดจึงใช้พารามิเตอร์จริง ๆ ทำไมไม่เพียงแค่เปลี่ยน proc ที่เก็บไว้เพื่อใช้ไวด์การ์ด? - อา ฉันเห็นความคิดเห็นอื่นของคุณ คุณถูกขัดขวางไม่ให้ทำอย่างนั้น...   -  person Mark Schultheiss    schedule 30.12.2015
comment
@MarkSchultheiss: ดูความคิดเห็นของฉันเพื่อตอบสนองต่อ lad2025 ฉันต้องการวิธีจัดการจากรหัส C# ของฉัน   -  person B. Clay Shannon    schedule 30.12.2015
comment
% เป็น ไวด์การ์ด เมื่อ ใช้กับ LIKE โอเปอเรเตอร์ แต่ถ้าไม่เกิดขึ้นก็จะไม่ทำงาน   -  person Damien_The_Unbeliever    schedule 30.12.2015
comment
ใช่ ฉันแค่จะแสดงความคิดเห็นว่าขั้นตอนการจัดเก็บต้องใช้สิ่งที่คล้ายกับ ...LIKE @Member.... ดูคำตอบที่นี่สำหรับตัวอย่าง: stackoverflow.com/questions/10601318/   -  person Mark Schultheiss    schedule 30.12.2015


คำตอบ (1)


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

person Tab Alleman    schedule 30.12.2015