Привет всем,
У меня есть вопрос. Я пытаюсь построить параметризованный запрос, чтобы получить количество строк в таблице в Oracle. Скорее просто. Однако я новичок в Oracle ..
Я знаю, что в SQL Server вы можете сделать что-то вроде:
Select @outputVariable = count(*) from sometable where name = @SomeOtherVariable
и затем вы можете установить параметр Output в System.Data.SqlClient для получения @ outputVariable.
Считая, что это можно сделать и в Oracle, у меня следующий запрос
Select count(*) into :theCount from sometable where name = :SomeValue
Я настроил параметры своего оракула (используя System.Data.OracleClient - да, я знаю, что он устарел в .Net 4 - но сейчас я над этим работаю) следующим образом
IDbCommand command = new OracleCommand();
command.CommandText = "Select count(*) into :theCount from sometable where name = :SomeValue";
command.CommandType = CommandType.Text;
OracleParameter parameterTheCount = new OracleParameter(":theCount", OracleType.Number);
parameterTheCount .Direction = ParameterDirection.Output;
command.Parameters.Add(parameterTheCount );
OracleParameter parameterSomeValue = new OracleParameter(":SomeValue", OracleType.VarChar, 40);
parameterSomeValue .Direction = ParameterDirection.Input;
parameterSomeValue .Value = "TheValueToLookFor";
command.Parameters.Add(parameterSomeValue );
command.Connection = myconnectionObject;
command.ExecuteNonQuery();
int theCount = (int)parameterTheCount.Value;
В этот момент я надеялся, что счет будет в параметре parameterTheCount
, к которому я могу легко получить доступ.
Я получаю сообщение об ошибке ora-01036, которое http://ora -01036.ora-code.com говорит мне проверить мою привязку в операторе sql. Я что-то напутал в операторе SQL? Я что-то упускаю в другом месте?
Я мог бы просто использовать command.ExecuteScaler (), так как я получаю только один элемент, и, вероятно, в конечном итоге буду использовать его, но в этот момент любопытство одолело меня. Что если бы у меня было два параметра, которые я хотел вернуть из своего запроса (то есть: выбрать max (ColA), min (ColB) в: max,: min .....)
Спасибо ..