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