Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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
C# 要从用户定义函数返回多列吗_C#_Sql Server_Stored Procedures - Fatal编程技术网

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";