sql-server - 执行大型 SQL 查询
问题描述
我正在尝试使用 FORMATMESSAGE SQL 函数执行动态创建的查询,当我这样做时出现错误
'.' 附近的语法不正确
我假设这是因为创建了修剪后的 SQL 查询。
set @sql = FORMATMESSAGE('insert into %s (imported_on, source_filename, md5_hash %s) select GETDATE(), ''%s'', ''%s'' %s from %s',
@target_tablename, @columns, @source_filename, 'TODO', @columns, @source_table);
exec (@sql);
@columns 变量持有一长串列~ 300(列)并且长度超过 4000。变量@columns
和@sql
两者都是类型nvarchar(max)
。
我看过其他建议拆分为多个变量的帖子,但也提到nvarchar(max)
应该有效。如果我不拆分字符串,我不知道如何进行。
谢谢
解决方案
自己执行字符串连接。
declare @sql nvarchar(max);
set @sql = convert(nvarchar(max), '')
+ 'insert into ' + @target_tablename + '(imported_on, ....
exec (@sql);
推荐阅读
- reactjs - 在展示组件中获取 Redux Store
- arrays - 如何在 Ajax 成功中使用 JSON 数据
- dnsjava - 如何禁用DNS java的递归查询?
- android - 如何在 Cordova 中获取系统的文件名?
- java - 如何在 maven 3 中获取最新的 RELEASE 版本的依赖项?
- json - 如何将 retryPolicy 设置为 ARM 模板变量
- python - Python - 忽略列表中的字符串不起作用
- spring-cloud-stream - 使用 zipkin + kafka 时 Spring 云流消息的 Sleuth 检测丢失
- c# - C#如何显示货币增加减少?
- .net - 身份服务器:在 MVC 客户端中使用混合流向 ClaimPrincipal 添加声明