Wpf 存储过程有问题吗?

Wpf 存储过程有问题吗?,wpf,vb.net,tsql,Wpf,Vb.net,Tsql,这是我的主表结构: “专家”列是与另一个具有可用语言列表的表的多对多关系。我希望有一个扁平的结构来显示一个人所精通的所有语言,所以我编写了一个存储过程,将这些多个专家进行字符串化,以适合每个用户 当我从wpf应用程序调用这个sp时,它没有显示值。我尝试了对象浏览器中的“预览数据”,它只显示了我表格的一行 (预期结果: 我的方法有什么问题 我的Sp: create procedure myView as Begin DECLARE @count INT,@finCount INT,@resul

这是我的主表结构:

“专家”列是与另一个具有可用语言列表的表的多对多关系。我希望有一个扁平的结构来显示一个人所精通的所有语言,所以我编写了一个存储过程,将这些多个专家进行字符串化,以适合每个用户

当我从wpf应用程序调用这个sp时,它没有显示值。我尝试了对象浏览器中的“预览数据”,它只显示了我表格的一行

(预期结果:

我的方法有什么问题

我的Sp:

create procedure myView as
Begin
DECLARE @count INT,@finCount INT,@result varchar(50)
SET @result =' '
SET @count = 1
SELECT @finCount=COUNT(*) FROM usersProfile 
WHILE (@count <= @finCount )
 BEGIN
   SELECT @result=@result+langName+','
   FROM expertises
   INNER JOIN ED_UPD_MERGE on expertises.id=ED_UPD_MERGE.idfrmED
   INNER JOIN usersprofile on ED_UPD_MERGE.idfrmUPD=usersprofile.expertiseid
   WHERE  usersprofile.id =@count

   SELECT usersProfile.id,usersProfile.fullname,usersProfile.screename  ,usersProfile.age ,usersProfile.address ,usersProfile.emailid1 ,usersProfile.emailid2 ,usersProfile.isActive ,usersProfile.entryCreated ,usersProfile.entryModified ,usersProfile.experience ,roles.rolesName,@result as Expertise
   FROM usersProfile        
   JOIN roles
   ON usersProfile.roleid =roles.id 
   WHERE  usersprofile.id =@count
   SET @result= ''
   SET @count = (@count + 1) 
  END
 End
将过程myView创建为
开始
声明@count INT、@finCount INT、@result varchar(50)
设置@result=''
设置@count=1
从usersProfile中选择@finCount=COUNT(*)

而(@count你能发布WPF代码吗


作为旁注:

拥有一个表专家,然后将该字段映射到专家ID,这将是一个更好的设计。因此基本上:

表:

  • 专家
  • 专家描述

然后,在您当前用于专业知识的字段中,您将创建一个桥接表并创建一个与新专业知识表的关系。

langName
是否允许空值?如果将至少一个空值连接到
@result
字符串,您将得到一个空结果。如果
lang中允许空值Name
列,并且假设您想忽略带有
langName
的行,您可以更改:

SELECT @result=@result+langName+','


如果
langName
为空,这将在@result的末尾添加一个空字符串;否则,langName将被追加到字符串。

同意,如果您有一个需要三个表的多对多关系,请不要将数据存储在Delimited srtring中。Kyle:无法获取。请详细说明:)PS:我有一个桥接表,如果这就是你所说的。我恐怕我之前没有提到它(但从我的sp中的连接来看,这是显而易见的)。不,它不允许NULL,这似乎对我没有问题:)
SELECT @result=@result+ ISNULL(langName+',', '')