Member 11187739 Ответов: 1

Sql select id from storedprocedure


У меня есть проблема с получением EmployeeID. У меня есть хранимая процедура, которая возвращает в одном текстовом поле Имя + Фамилия + docNo, например "Richarson Michael 674UK". Процедура Stroed ниже:

CREATE PROCEDURE [dbo].[SearchEmployee]
	@employeeSurname varchar(80)

AS
	SELECT (surname+ ' ' + name+ ' ' + DocNo) as surname, EmployeeId
	FROM Employee
	WHERE surname LIKE @employeeSurname+ '%'
RETURN


У меня есть также второй метод, который должен возвращать идентификатор сотрудника из TexBox выше. Мой метод всегда повторяет 0. Мой метод приведен ниже:

public int returnEmployeeId (string text) {
int employeeId = 0;
string query = "SELECT EmployeeId"
+ " FROM Employee WHERE surname LIKE'%" + text + "%'";
(...) 

return employeeId;
}


Что я уже пробовал:

Я попытался создать метод returnEmployeeId для разных способов. Я хотел использовать свою процедуру strored, где SqlDataReader возвращает employeeId, но он всегда возвращает 0. Я также пытался создать другой запрос, но всегда один и тот же. Текстовое поле, в котором отображаются данные, имеет subbmited AutoPostBAck для true. Может ли кто-нибудь дать мне совет или подсказку, как решить мою проблему?
Заранее спасибо.

[no name]

"Я хотел использовать свою хранимую процедуру", а затем покажите нам код, в котором вы вызываете хранимую процедуру.

Member 11187739

Мой метод выглядит так:
public int returnEmployeeId (строковый текст) {
int employeeId = 0;
Sqlconnection для подключения = параметр "createconnection".newConnection();
Команда SqlCommand = new SqlCommand ("SearchEmployee", соединение);
команда.Параметры.AddWithValue ("@employeeSurname ", текст);
Читатель SqlDataReader;

использование (соединение)
{
соединение.Открыть();
использование (команда)
{
команда.CommandType = CommandType.Хранимая процедура;


читатель = команда.Метода executereader();
если (читатель.HasRows)
{
в то время как (читатель. читать())
{
кодсотрудника = инт.Анализа(ридер["Кодсотрудника"].Метод toString());
}
}

}
Параметр "createconnection".значение closeconnection(подключение);
}
вернуться кодсотрудника;
}

[no name]

Вам нужно установить тип команды в хранимую процедуру.

1 Ответов

Рейтинг:
2

RossMW

Вместо того чтобы использовать хранимую процедуру, вы должны использовать функцию с табличным значением, которая возвращает таблицу

напр.

CREATE FUNCTION [dbo].[SearchEmployee]
(@employeeSurname varchar(80))
RETURNS TABLE 
AS
RETURN 
(SELECT (surname+ ' ' + name+ ' ' + DocNo) as surname, EmployeeId
	FROM Employee
	WHERE surname LIKE @employeeSurname+ '%'
)


Таким образом, вы можете относиться к нему как к любому обычному столу

т.е.

Select * from Searchemployee ('Bob')