Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在批量插入中使用一些变量为Lastrow和Firstrow参数赋值?_Sql Server_Sql Server 2012 Express - Fatal编程技术网

Sql server 如何在批量插入中使用一些变量为Lastrow和Firstrow参数赋值?

Sql server 如何在批量插入中使用一些变量为Lastrow和Firstrow参数赋值?,sql-server,sql-server-2012-express,Sql Server,Sql Server 2012 Express,我在执行上述脚本时出错 任何人都可以解释在大容量插入语句中使用某个变量来指定Lastrow和firstrow参数的正确方法是什么?类似这样的内容: DECLARE @sqlCommand VARCHAR(MAX) DECLARE @NAME varchar (100) DECLARE @FIRSTROW INT,@LASTROW INT SET @FIRSTROW = (SELECT TOP 1 [Id] FROM [dbo].[TableB] ORDER BY [Id] DES

我在执行上述脚本时出错 任何人都可以解释在大容量插入语句中使用某个变量来指定Lastrow和firstrow参数的正确方法是什么?

类似这样的内容:

DECLARE @sqlCommand VARCHAR(MAX) DECLARE @NAME varchar (100)
DECLARE @FIRSTROW INT,@LASTROW INT
SET @FIRSTROW =
  (SELECT TOP 1 [Id]
   FROM [dbo].[TableB]
   ORDER BY [Id] DESC) + 1
SET @LASTROW = @FIRSTROW + 4
SELECT @NAME =
  (SELECT 'C:\InsertTestdata.txt')
SET NOCOUNT ON;


SET @sqlCommand = 'BULK INSERT [dbo].[TableA] FROM ''' + @NAME + '''
                            WITH (DATAFILETYPE = ''char'',
                            FIELDTERMINATOR = '','',
                            ROWTERMINATOR = '''+CHAR(10)+''',
                            FIRSTROW = 2,
                            LASTROW = '''+ @LASTROW +'''
                            );' 
EXEC (@sqlCommand);
输出

DECLARE @sqlCommand VARCHAR(MAX) DECLARE @NAME varchar (100)
DECLARE @FIRSTROW INT,@LASTROW INT
SET @FIRSTROW = 4
  --(SELECT TOP 1 [Id]
  -- FROM [dbo].[TableB]
  -- ORDER BY [Id] DESC) + 1
SET @LASTROW = @FIRSTROW + 4
SELECT @NAME =
  (SELECT 'C:\InsertTestdata.txt')
SET NOCOUNT ON;


SET @sqlCommand = concat('BULK INSERT [dbo].[TableA] FROM ''' , @NAME , '''
                            WITH (DATAFILETYPE = ''char'',
                            FIELDTERMINATOR = '','',
                            ROWTERMINATOR = ''\n'',
                            FIRSTROW = 2,
                            LASTROW = ', @LASTROW ,'
                            );' );
print @sqlCommand;

执行上述脚本时出错
错误是什么?将varchar值“BULK INSERT[dbo].[TableA]从“C:\InsertTestData.txt”转换为(DATAFILETYPE='char',FIELDTERMINATOR=',',ROWTERMINATOR='',FIRSTROW=''转换为数据类型int。尝试将查询中的所有int转换为varchar..ex:`2` FIRSTROW将变为varyYou知道如何将变量分配给表中的值。
BULK INSERT [dbo].[TableA] FROM 'C:\InsertTestdata.txt'
                            WITH (DATAFILETYPE = 'char',
                            FIELDTERMINATOR = ',',
                            ROWTERMINATOR = '\n',
                            FIRSTROW = 2,
                            LASTROW = 8
                            );