I have a custom type that I create using the following:
IF EXISTS (SELECT * FROM sys.types WHERE is_table_type = 1 AND name = 'LineItemType') BEGIN DROP TYPE dbo.LineItemType END GO CREATE TYPE dbo.LineItemType AS TABLE ( Id UNIQUEIDENTIFIER, Invoice_Id UNIQUEIDENTIFIER, Cost INT, Quantity INT, Total INT, [Description] NVARCHAR(250) ); GO
This type is used as a parameter of one of my stored procedures, such as:
IF EXISTS (SELECT 1 FROM sys.procedures WHERE name = 'AddSomething' AND SCHEMA_NAME(schema_id) = 'dbo') BEGIN DROP PROCEDURE dbo.AddSomething END GO CREATE PROCEDURE AddSomething ... @LineItems AS dbo.LineItemType READONLY AS BEGIN ...
My problem is that since then I decided to add some columns to my type, I updated my script above by adding a column, and expected it to just be reset and recreated when I started it, but got this error instead :
Msg 3732, Level 16, State 1, Line 4 Cannot delete type 'dbo.LineItemType' because the object 'Add Something' refers to it. There may be other objects that reference this type. Msg 219, Level 16, State 1, Line 8 The type 'dbo.LineItemType' already exists, or you do not have permission to create it.
What am I missing? How can I delete my type and recreate it anytime?
Thanks.
sql sql-server
shenku
source share