【问题标题】:Accept input parameter using function in T-SQL在 T-SQL 中使用函数接受输入参数
【发布时间】:2019-02-16 12:45:21
【问题描述】:

我有这个脚本可以执行,但我需要它来接受用户输入,而不是为@lastName 设置变量。

创建函数 displayCount() 返回 INT 作为 开始 声明 @number INT, @lastName VARCHAR(40); SET @lastName = 'Ferrier'; 从 Person.Person 中选择 @number = COUNT(*) WHERE 姓氏 = @lastName; 返回@数字; 结尾 走 选择 dbo.displayCount() 作为 howMany

我试图弄乱我认为可行的方法,但没有。我得到了错误

'过程或函数 dbo.diplayCount 有太多参数'

我敢肯定这很简单,而且我太新了,我看不到它。感谢您的帮助!

创建函数 displayCount(@lastName VARCHAR(40)) RETURNS INT 作为 开始 声明@number INT; 从 Person.Person 中选择 @number = COUNT(*) WHERE 姓氏 = @lastName; 返回@数字; 结尾 走 选择 dbo.displayCount('Ferrier') 作为 howMany

【问题讨论】:

  • 你在使用SQL Server Management Studio吗?
  • 是的,我正在使用 SQL Server 管理

标签: sql sql-server tsql


【解决方案1】:

您的函数看起来不错,但我想您需要使用ALTER 而不是CREATE,因为该函数已经存在于数据库中。

你需要修改而不是创建。

ALTER FUNCTION displayCount(@lastName VARCHAR(40)) RETURNS INT
AS
BEGIN
    DECLARE @number INT;   
    SELECT @number = COUNT(*) FROM Person.Person 
    WHERE LastName = @lastName;
    RETURN @number;
END  

GO

SELECT dbo.displayCount('Ferrier') as howMany

【讨论】:

  • 抱歉,输入问题时打错字了
  • 是的,我同时意识到了这一点。我讨厌成为新人,但这是一种学习体验。
【解决方案2】:

SSMS 中,展开 [您的数据库] > 可编程性文件夹 > 函数文件夹 > 表值函数 > 右键单击​​ > 新建内联表值函数...

设置 ANSI_NULLS ON 走 设置 QUOTED_IDENTIFIER ON 走 -- =============================================== - 作者: -- 创建日期: - 描述: -- =============================================== 创建函数显示计数 ( @lastName varchar(40) ) 回报表 作为 返回 ( 选择 COUNT(*) 作为多少 FROM Person.Person WHERE 姓氏 = @lastName ) 走

然后调用它

SELECT howMany FROM dbo.displayCount('Ferrier')

【讨论】:

  • 您为什么选择从 OP 的标量函数更改为表值函数?任何一个都可以接受参数。
  • 感谢 HABO,这更像是我不知道使用标量函数的事后诸葛亮。我学到了一些新东西。
猜你喜欢
  • 2015-08-02
  • 1970-01-01
  • 2014-02-23
  • 2012-01-21
  • 2012-03-03
  • 2020-06-23
  • 1970-01-01
  • 2015-06-14
  • 1970-01-01
相关资源
最近更新 更多