Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 存储过程具有void类型,而不是返回所需的结果_Asp.net_Sql Server_Linq_Stored Procedures - Fatal编程技术网

Asp.net 存储过程具有void类型,而不是返回所需的结果

Asp.net 存储过程具有void类型,而不是返回所需的结果,asp.net,sql-server,linq,stored-procedures,Asp.net,Sql Server,Linq,Stored Procedures,这是我的存储过程实现: ALTER procedure [dbo].[ShowProjectByNameOfPerson] (@name as nvarchar) as begin select Personality.id,COUNT(*) as cnt into #test from Personality,Project,Personal_project where Personality.Id = Personal_project.PersonalityId_FK and P

这是我的存储过程实现:

ALTER procedure [dbo].[ShowProjectByNameOfPerson]
(@name as nvarchar)
as begin

select   Personality.id,COUNT(*) as cnt into  #test 
 from Personality,Project,Personal_project
where Personality.Id = Personal_project.PersonalityId_FK
and Project.Id = Personal_project.ProjectId_FK
and Personality.FullName like N'%'+@name+'%'
group by Personality.Id
order by cnt desc
select * from #test,Personality
where #test.id = Personality.id
end
我在ASP.Net项目中创建Linq ToSQL类项,并将过程分配给DBML文件。 但是,当我想在创建上下文实例后使用该过程时,会出现以下错误:

Cannot assign void to an implicitly-typed local variable

No overload for method 'ShowProjectByNameOfPerson' 
这是.cs文件中存储过程的调用代码:

DataClassesDataContext db = new DataClassesDataContext();
var lst = db.ShowProjectByNameOfPerson(txt);
我怎样才能解决这个问题


感谢高级版。

您对各种t-sql函数类型感到困惑

你想要的是:

create function [dbo].[ShowProjectByNameOfPerson] (@name as nvarchar)
returns table
as return (
  select
    Personality.Id, Personality.FullName, 
    COUNT(*) as cnt
  from Personality
  inner join Personal_project 
    on Personality.Id = Personal_project.PersonalityId_FK
  where Personality.FullName like N'%' + @name + N'%'
  group by Personality.Id, Personality.FullName
  order by cnt desc
);
请参阅MSDN参考以了解语法变体及其含义:


另外,您应该尽量避免不必要地使用临时表(参见我如何更改代码)。

在存储过程中使用“select*”是一种不好的做法。如果表被更改,您的程序将无法了解它,并且将失败。如果您特别调用列,更改不会中断您的程序。您是否在程序中使用可为空的类型化变量?