web-dev-qa-db-ja.com

関数の結果をSQL変数に割り当てて表示する

関数およびサブルーチンをパラメーターとして使用するためのasp.netコード(VB.net)のマイグレーション。 MS Server Management Studioを使用して、上記の関数とサブルーチンを作成します。 MSページで関数をテストする前に、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

関数呼び出しの括弧に注意してください。注:SMSのintellisenseは、エラーのようにdbo.getNumber()に下線を引きますが、F5でクエリを実行すると機能し、正しい結果が出力されます。

20
elbillaf

次のように呼び出す必要があります。

select @value = dbo.getNumber()
49
James Johnson