лучший способ многократного использования одного параметра в C #

Я новичок в использовании подготовленных операторов для запроса данных из базы данных, и у меня возникли проблемы с реализацией параметров для C #, в частности OracleParameters.

Допустим, у меня есть следующий SQL:

string sql = "select * 
              from table1 t1, table2 t2 
              where t1.columnX = @parm and t2.columnY = @parm"

И код такой:

OracleCommand cmd = new OracleCommand(sql, conn);
cmd.Parameters.Add(new OracleParameter("@parm", strParm));

Проблема в том, что когда запускается cmd, t1.columnX получает значение strParm, но когда t2.columnY вот-вот получит значение strParm, он выдает исключение «ORA-01008: не все переменные связаны».

Мне кажется, что параметр может быть заменен только один раз, даже если этот параметр находится где-то еще в sql.

Одно из решений, которое я пробовал и которое у меня работает:

OracleCommand cmd = new OracleCommand(sql, conn);
cmd.Parameters.Add(new OracleParameter("@parm", strParm));
cmd.Parameters.Add(new OracleParameter("@parm", strParm));

Другое решение:

OracleCommand cmd = new OracleCommand(sql, conn);
cmd.Parameters.Add(new OracleParameter("@parm1", strParm));
cmd.Parameters.Add(new OracleParameter("@parm2", strParm));

, а модифицированный sql - это:

string sql = "select * 
             from table1 t1, table2 t2 
             where t1.columnX = @parm1 and t2.columnY = @parm2" 

Вопрос в том, есть ли лучший способ сделать это, чтобы я не нужно добавлять еще один параметр с тем же значением.

Примечание: я просто упростил приведенный выше запрос, чтобы показать, что @parm используется в нескольких частях запроса. В реальной жизни в этом запросе один и тот же параметр использовался несколько раз, и неудобно добавлять более одного параметра с одним и тем же именем и значением.

10
задан QuickDanger 14 July 2017 в 06:20
поделиться