这是 Sql Server 中一个有趣的问题;我有一个存储过程,执行时返回以下错误:
“MyTable”类型已经存在,或者您没有创建它的权限。
我认为 MyTable 类型没有正确创建,我的猜测是基于其他类型(例如 nvarchar)都是蓝色的,而当我将鼠标悬停在 @T 声明上方时(DECLARE @T AS MyTable) ,它说@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