- The last line in the stored procedure:
select * from @t - Updated model and it found the stored procedure
- Tried to import a new function using the wizard and it said no columns could be found.
Seriously? Someone tell me that it lies.
create procedure WorkIt
as
set nocount on
create table #pivot
(
Name varchar(30),
Value decimal,
Grade varchar(2)
)
insert into #pivot
select 'Repeating Pct', 1, 'K'
union all
select 'Repeating Pct', 2, '1'
union all
select 'Repeating Pct', 3, '2'
union all
select 'Repeating Pct', 4, '3'
union all
select 'Repeating Pct', 5, '4'
union all
select 'Repeating Pct', 6, '5'
union all
select 'Repeating Pct', 7, '6'
union all
select 'Repeating Pct', 8, '7'
union all
select 'Repeating Pct', 9, '8'
union all
select 'Repeating Pct', 10, '9'
union all
select 'Repeating Pct', 11, '10'
union all
select 'Repeating Pct', 12, '11'
union all
select 'Repeating Pct', 13, '12'
declare @t table
(
name varchar(30),
K decimal (15,5) ,
[1] decimal (15,5),
[10] decimal (15,5),
[11] decimal (15,5),
[12] decimal (15,5),
[2] decimal (15,5),
[3] decimal (15,5),
[4] decimal (15,5),
[5] decimal (15,5),
[6] decimal (15,5),
[7] decimal (15,5),
[8] decimal (15,5),
[9] decimal (15,5)
)
insert into @t
exec dbo.CrossTabWithoutSumWithOrderBy #pivot, 'Name', null, 'Grade', 'Value',
-- sort repeating pct to bottom
'case name when ''Repeating Pct'' then 999 else 0 end'
drop table #pivot
select * from @t
Result
name K 1 10 11 12 2 3 4 5 6 7 8 9
Repeating Pct 2.00000 11.00000 12.00000 13.00000 3.00000 4.00000 5.00000 6.00000 7.00000 8.00000 9.00000 10.00000 1.00000
When entity framework tries to retrieve columns from stored procedure it calls
SET FMTONLY ONand after that executes the stored procedure. WhenFMTONLYisONexecution returns only metadata and it doesn’t work with some advanced construction in stored procedures – for example dynamic SQL, temporary tables and also table variables.You have three choices:
SET FMTONLY OFFat beginning of your stored procedure. This will cause your stored procedure to really execute so make sure it only reads data – any insert, update or delete will be executed each time you try to retrieve columns!