Мне нужно вставить объемные данные в базу данных, а таблица также создается динамически.Для динамического StoredProcedure с пользовательской ошибкой определенного типа данных: Должен объявить скалярную переменную «@ myTableType2»
Сначала создали UserDefined Datatypes
-- This is my user defined type
CREATE TYPE [dbo].[Custom_block] AS TABLE(
[Name] [nvarchar](200) NULL,
[population] [nvarchar](200) NULL
)
Тогда у меня есть DataTable (C#), который я должен вставить в таблицу SQL.
--My StoredProcedure :
CREATE PROCEDURE dumpData(
@myTableType [Custom_block] readonly,
@tableName NVARCHAR(200)
)
AS
BEGIN
DECLARE @sql NVARCHAR(MAX);
Declare @myTableType2 as [Custom_block];
set @[email protected];
SET @sql=N' truncate table '+QUOTENAME(@tableName)+ '
insert into '+QUOTENAME(@tableName)+' select * from '[email protected]
EXECUTE sp_executesql @sql
END
Ошибка подводит:
Msg 137, Level 16, State 1, Procedure dumpData, Line 12 Must declare the scalar variable "@myTableType2"
remove 'set @ myTableType2 = @ myTableType;' use 'insert в select query to copy'..i'm not sure. –
уже пробовал без set '@ myTableType2 = @ myTableType;' не работает –
это не будет работать, потому что вы создаете команду, которая заканчивается на «select * from», и вы не конкатенируете с именем таблицы, а с самой таблицей. – GuidoG