0

Sql Server で SELECT の結果を変数にどのように割り当てますか?

これが私の試みです:

CREATE PROCEDURE x
AS 
BEGIN

DECLARE @MyVar integer
DECLARE @sql nvarchar(150), @v nvarchar(50)
Set @v = 'mytable' 
--SET @sql = 'SELECT INTO ' + @MyVar + 'count(*) FROM ' + @v 
SET @sql = 'Set ' + @MyVar + '= SELECT count(*) FROM ' + @v 
EXEC sp_executesql @sql
print @MyVar
END

varchar 値 'Set ' をデータ型 int に変換するときに変換に失敗しました。

構文の学習に関する推奨事項も役に立ちます。ありがとうございました!

4

1 に答える 1

3

OUTPUT以下のようにパラメータを使用できsp_executesqlます。

DECLARE @MyVar INTEGER
DECLARE @sql NVARCHAR(MAX),
        @v   SYSNAME

SET @v = N'mytable'
SET @sql = N'SELECT @MyVar = count(*) FROM ' + QUOTENAME(@v)

EXEC sp_executesql
  @sql,
  N'@MyVar INT OUTPUT',
  @MyVar = @MyVar OUTPUT

PRINT @MyVar 

RE:「構文の学習に関する推奨事項」オンラインの本以外は実際にはありませんが、動的SQLの呪いと祝福を読んでなぜQUOTENAME重要なのかを確認する必要があります。

于 2013-01-06T15:35:13.327 に答える