Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / {CALL ProcedureName(?,?)} / 6 сообщений из 6, страница 1 из 1
06.06.2003, 13:06
    #32178341
henry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
{CALL ProcedureName(?,?)}
Есть на SQL sp
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE procedure GetA_ActionID
(@pActionName varchar( 24 ),
 @pActionID int = 0  output
)
as 
 select top  1  @pActionID=ActionID from actions where ActionName LIKE '%'+ @pActionName+'%'
 if @@rowcount= 1 
    return  0 
 else
   return - 1 
GO


Такой код выполняется
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
string s=ConfigurationSettings.AppSettings[ "appConnString" ];
			System.Data.SqlClient.SqlConnection Conn=new SqlConnection(ConfigurationSettings.AppSettings[ "appConnString" ]);
			Conn.Open();			
			SqlCommand cmd= Conn.CreateCommand();

			cmd.Connection=Conn;
			cmd.CommandText= "GetA_ActionID" ;
			cmd.CommandType=CommandType.StoredProcedure;

			cmd.Parameters.Add( "@RetVal" ,SqlDbType.Int);
			cmd.Parameters.Add( "@pActionName" ,SqlDbType.VarChar, 24 );
			cmd.Parameters.Add( "@pActionID" ,SqlDbType.Int);

			
			cmd.Parameters[ "@pActionName" ].Value=textBox1.Text;			

			cmd.Parameters[ "@RetVal" ].Direction=ParameterDirection.ReturnValue;
			cmd.Parameters[ "@pActionName" ].Direction=ParameterDirection.Input;
			cmd.Parameters[ "@pActionID" ].Direction=ParameterDirection.Output;

            cmd.ExecuteNonQuery();
			Console.WriteLine( "--------------");
 
			Console.WriteLine (cmd.Parameters["@pActionName "].Value);
			Console.WriteLine (cmd.Parameters[" @pActionID "].Value.ToString());			
			Console.WriteLine (cmd.Parameters[" @RetVal "].Value.ToString());			
			Console.WriteLine("  --------------");
 
			//Console.WriteLine (cmd.Parameters[ 2 ].Value);
			Conn.Close();


Если меняю
cmd.CommandText="GetA_ActionID";
на
cmd.CommandText="{?=CALL GetA_ActionID(?,?)}";
то на методе
cmd.ExecuteNonQuery();
выдается ошибка
Код: plaintext
1.
2.
An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in system.data.dll
Additional information: System error.

Подскажите где я ошибся
Спасибо
...
Рейтинг: 0 / 0
06.06.2003, 14:45
    #32178490
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
{CALL ProcedureName(?,?)}
если я правильно понимаю, то call prc_name - это уже query, а ты выполняешь ExecuteNonQuery
...
Рейтинг: 0 / 0
06.06.2003, 15:15
    #32178529
henry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
{CALL ProcedureName(?,?)}
В том то и дело что возник вопрос по такому вызову
Взял книжку.Сделал по примеру из книжки Дэвида Сеппа "Microsoft ADO.NET", стр 99 У него ExecuteNonQuery...
...
Рейтинг: 0 / 0
06.06.2003, 15:43
    #32178576
henry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
{CALL ProcedureName(?,?)}
нашел ответ

cmd.CommandText="{?=exec GetA_ActionID(?,?)}";

вместо CALL работает exec
...
Рейтинг: 0 / 0
06.06.2003, 15:46
    #32178579
Gennady Podpletenny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
{CALL ProcedureName(?,?)}
Нет все же EXEC не работает
...
Рейтинг: 0 / 0
10.06.2003, 15:05
    #32180624
Gennady Podpletenny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
{CALL ProcedureName(?,?)}
РЕШЕНИЕ:
использовать OleDbCommand
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / {CALL ProcedureName(?,?)} / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]