これは、Sql Server の興味深い問題です。実行時に次のエラーを返すストアド プロシージャがあります。
タイプ 'MyTable' は既に存在するか、作成する権限がありません。
タイプ MyTable が適切に作成されていないと思います。この推測は、@T 宣言 (DECLARE @T AS MyTable) の上にマウスを置くと、他のタイプ (nvarchar など) はすべて青色で表示されるという事実に基づいています。 、 @T のデータ型が無効であると表示されます。
sproc のバージョンは次のとおりです。
CREATE PROCEDURE SPXXX
AS
BEGIN
DECLARE @calc numeric(18,2)
DECLARE @sql nvarchar(1500), @column_name nvarchar(50), @table_name nvarchar(50), @prmDef nvarchar(1500)
DECLARE @v1 nvarchar(50), @v2 nvarchar(50)
DECLARE @T AS MyTable
Set @column_name = 'EID'
Set @table_name = 'CTRY_S'
Set @sql = N'Select @calcOUT = SUM(datalength(@v1))/2 from @T';
Set @prmDef = '@v1 nvarchar(50), @calcOUT numeric(18,2) OUTPUT';
EXECUTE sp_executesql @sql, @prmDef, @v1=@column_name, @T=@table_name, @calcOUT=@calc OUTPUT;
END
GO