2013-09-11 4 views
0

У меня есть простая хранимая процедура. В SalesTableItemId i.e 1001 повторяется 10 раз с различными значениями. Таким образом, эта процедура должна выбрать 10 значений Amount и EmployeeName. Однако он просто возвращает одно значение первого вхождения ItemId. Что здесь не так?Возвращение нескольких значений в хранимой процедуре

Я хочу, чтобы процедура выбирала и возвращала 10 значений Amount и EmployeeName. Когда я запускаю запрос отдельно в SQL Server Management Studio, он возвращает все значения, но в хранимой процедуре возвращает только первое значение. Пожалуйста помоги.

ALTER procedure entitiesRead 
    @ItemId    integer 
    ,@SessionId   integer  
as 
begin 
    select 
     a.amount as Amount 
     b.EmployeeName    
    from 
     salesTable a 
    left outer join 
     nameEmployees b on (b.id = a.employeeId) 
    where 
     ItemId = @ItemId 
end 
+3

Вы можете воспроизвести эту ошибку на sqlfiddle.com? –

+2

Откуда вы знаете, что это только одна строка? Где находится ваш код, который запускает хранимую процедуру? – zimdanen

+0

где вы запускаете эту хранимую процедуру, где она не работает так, как вы ожидали? – Malachi

ответ

2

Ваш запрос не подходит для меня; он содержит ошибку. Добавить запятую после «Сумма» в ваш выбор:

select 
a.amount as Amount, 
b.EmployeeName    
from salesTable a 
left outer join nameEmployees b on(b.id=a.employeeId) 
where [email protected] 

Кстати, вот мой тест, который отлично работал. Вы можете также дважды проверить данные в своих таблицах:

CREATE TABLE #salesTable (ItemId int, amount money, employeeId int) 
INSERT INTO #salesTable (ItemId, amount, employeeId) VALUES (1001, 100.00, 1) 
INSERT INTO #salesTable (ItemId, amount, employeeId) VALUES (1001, 101.00, 1) 
INSERT INTO #salesTable (ItemId, amount, employeeId) VALUES (1001, 102.00, 1) 
INSERT INTO #salesTable (ItemId, amount, employeeId) VALUES (1001, 103.00, 1) 
INSERT INTO #salesTable (ItemId, amount, employeeId) VALUES (1001, 104.00, 1) 
INSERT INTO #salesTable (ItemId, amount, employeeId) VALUES (1001, 105.00, 2) 
INSERT INTO #salesTable (ItemId, amount, employeeId) VALUES (1001, 106.00, 2) 
INSERT INTO #salesTable (ItemId, amount, employeeId) VALUES (1001, 107.00, 2) 
INSERT INTO #salesTable (ItemId, amount, employeeId) VALUES (1001, 108.00, 2) 
INSERT INTO #salesTable (ItemId, amount, employeeId) VALUES (1001, 109.00, 2) 

CREATE TABLE #nameEmployees (id int, employeeName varchar(50)) 
INSERT INTO #nameEmployees (id, employeeName) VALUES (1, 'John Smith') 
INSERT INTO #nameEmployees (id, employeeName) VALUES (2, 'Jane Doe') 

select 
a.amount as Amount, 
b.EmployeeName    
from #salesTable a 
left outer join #nameEmployees b on(b.id=a.employeeId) 
where ItemId=1001 
Смежные вопросы