C# 要从用户定义函数返回多列吗
我必须在我的组合框中显示C# 要从用户定义函数返回多列吗,c#,sql-server,stored-procedures,C#,Sql Server,Stored Procedures,我必须在我的组合框中显示用户名。但是,我还需要username\u Id值 如何为结果设置用户名,同时选择用户id值 任何帮助都将不胜感激 谢谢。试试这个 ALTER FUNCTION [dbo].[FN.USER] (@USER_ID INT) RETURNS VARCHAR(300) AS BEGIN DECLARE @RESULT VARCHAR(300) = '' Select @RESULT =[USER_NAME] From USER WHERE USER_ID=@U
用户名
。但是,我还需要username\u Id
值
如何为结果设置用户名,同时选择用户id值
任何帮助都将不胜感激
谢谢。试试这个
ALTER FUNCTION [dbo].[FN.USER] (@USER_ID INT)
RETURNS VARCHAR(300) AS
BEGIN
DECLARE @RESULT VARCHAR(300) = ''
Select @RESULT =[USER_NAME] From USER
WHERE USER_ID=@USER_ID
RETURN @RESULT
然后您可以通过编写以下命令来选择from函数
CREATE FUNCTION [FN.USERNew]
(
@USER_ID INT
)
RETURNS TABLE
AS
RETURN
(
-- Add the SELECT statement with parameter references here
Select [USER_NAME] , username_Id From USER
WHERE USER_ID=@USER_ID
)
GO
这是一个标量函数而不是存储过程,您可以在如下select语句中使用它
SELECT * FROM [dbo].[FN.USERNew] (1)
如果要写入存储过程,请尝试以下操作:
SELECT Username(somevalue), ....
或者,您可以根据Dhaval的回答使用表函数
如果您想从其他表中获取数据,只需进行连接即可
CREATE PROCEDURE GetUser
@USER_ID int
AS
SELECT [USER_NAME], username_Id, whatever ...
FROM USER
WHERE USER_ID = @USER_ID
如果希望在combobox中同时包含这两个值,只需将combobox.DisplayMember设置为用户名描述,将combobox.ValueMember设置为用户名ID
ALTER FUNCTION [dbo].[FN.USER] (@USER_ID INT)
BEGIN
Select USER_NAME, USER_ID
From USER
Where USER_ID=@USER_ID
END
你的问题不清楚。我想可能有两个。1.如何从存储的进程返回用户名和ID(我们需要表结构)2。如何在组合框中显示。组合框的属性允许这样做。将
UserID
添加到返回的数据中。当您基于SQL
创建下拉选项时,只需从查询结果中指定DisplayMember
和ValueMember
。您到底为什么需要一个函数来实现这一点?您不能将联接作为查询的一部分来执行吗?我给你一个提示:标量函数不可能使代码更快,在大多数情况下,它们会使代码更慢。封装很有趣,很有光泽,但并不总是合适的。你不是唯一一个最聪明的Aoron。我的代码太长了,我只是让little one来解决我在项目中的问题。如果我写return,return的下一行是红色的,它会给出语法错误。试着在我的存储过程中使用这个函数。所以如果我写like,FN.USERNew(User_Id)作为UserData,我得到语法错误您不能将'FN.USERNew(User_Id)作为UserData'写入,因为将返回两列,并且无法存储在列上。我将就此提出新问题,请遵循。
ALTER FUNCTION [dbo].[FN.USER] (@USER_ID INT)
BEGIN
Select USER_NAME, USER_ID
From USER
Where USER_ID=@USER_ID
END
comboProject.DisplayMember = "USER_NAME";
comboProject.ValueMember = "USER_ID";