這裏是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」聽起來像是存在的。你發佈的程序雖然是無效的語法。你不應該試圖在程序本身中創建這種類型。 –