У меня есть хранимая процедура в Oracle, как показано ниже:
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, но не знаю, как его использовать.