这里是Sql Server中的一个有趣问题;我有一个存储过程,执行时返回以下错误:创建表类型并将值分配给sproc中的该类型的变量
The type 'MyTable' already exists, or you do not have permission to create it.
我觉得MyTable的未正确创建的类型,我基地这样一个事实,其他类型的这个猜测(nvarchar的,例如)都当我将鼠标悬停在@T声明(DECLARE @T AS MyTable)上时,它表示@T具有无效的数据类型。
这里是存储过程的一个版本:
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, @[email protected]_name, @[email protected]_name, @[email protected] OUTPUT;
END
GO
刷新您的智能感知缓存。您发布的错误消息中的“Ctrl + Shift + R”听起来像是存在的。你发布的程序虽然是无效的语法。你不应该试图在程序本身中创建这种类型。 –