将函数结果分配给SQL变量并显示

时间:2011-08-08 21:32:50

标签: function variables printing ssms

迁移asp.net代码(VB.net)以使用函数和子例程作为参数。 使用MS Server Management Studio创建所述函数和子。 想在通过网页测试之前测试MS SMS中的功能。 这是一个例子。假设我有一个名为“dbo.getNumber”的函数

我正在尝试使用以下方法对其进行测试:

USE [someDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
declare @value int;

select @value = dbo.getNumber;

print @value;
go

当我输入F5(运行“查询”)时,它会给出以下信息:

“在此上下文中不允许使用名称”dbo.getNumber“。有效表达式是常量,常量表达式和(在某些上下文中)变量。不允许使用列名。”

接受函数dbo.getNumber就好了,顺便说一下。 (它计算满足特定条件的数据库记录。)

希望你可以从非工作代码中推断出我想要做什么。

如何从SMS中打印函数的值(用于测试目的)?

根据James Johnson的正确解决方案,如下:

USE [someDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
declare @value int;

select @value = dbo.getNumber();

print @value;
go

请注意函数调用的parens。 另请注意:SMS中的intellisense强调dbo.getNumber(),就好像它是一个错误,但是使用F5运行查询并输出正确的结果。

1 个答案:

答案 0 :(得分:46)

你需要这样称呼它:

select @value = dbo.getNumber()