我有Oracle中的存儲過程使用,如下所示:發送值的陣列,以Oracle過程中WHERE IN子句
CREATE PROCEDURE MY_TEST_PROC(
CUR OUT SYS_REFCURSOR,
PARAM_THAT_WILL_BE _USED_INSIDE_WHERE_IN
)
AS
BEGIN
OPEN CUR FOR
SELECT *
FROM MY_TABLE
WHERE COL1 IN (here I want to put values received from C#)
END;
在ASP.NET應用側我有一個選擇元件與多個選項。我想在我的WHERE子句中使用這些列表項。我知道我可以在我的存儲過程中使用VARCHAR2輸入參數,從列表項目中生成逗號分隔的字符串,並將其發送到過程。有兩個問題與打算是這樣的:
- 我要讓我的網站容易受到SQL注入
- 在我的存儲過程我必須使用EXECUTE(「SELECT ...」)模式,我想避免。
如何將這些列表項發送到存儲過程並在WHERE IN子句中使用它們?我使用ODP.NET並聽說過UDT,但不知道如何使用它。
一個非常聰明的方法。 –
雖然可能會降低性能,但確實是一種智能方法。例如,如果col1上有索引,則可能不會使用 –
這不是一種明智的方法。動態SQL應該始終是最後的手段。它也對基本上是自由文本字段的格式(沒有空格,沒有製表符)施加限制。就像AB所說的那樣,就是表現。 – APC