powered by simpleCommunicator - 2.0.34     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / {CALL ProcedureName(?,?)}
6 сообщений из 6, страница 1 из 1
{CALL ProcedureName(?,?)}
    #32178341
henry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть на 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
{CALL ProcedureName(?,?)}
    #32178490
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если я правильно понимаю, то call prc_name - это уже query, а ты выполняешь ExecuteNonQuery
...
Рейтинг: 0 / 0
{CALL ProcedureName(?,?)}
    #32178529
henry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В том то и дело что возник вопрос по такому вызову
Взял книжку.Сделал по примеру из книжки Дэвида Сеппа "Microsoft ADO.NET", стр 99 У него ExecuteNonQuery...
...
Рейтинг: 0 / 0
{CALL ProcedureName(?,?)}
    #32178576
henry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нашел ответ

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

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


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