Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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 长字符串参数化查询_Sql_R Dbi_Exasolution - Fatal编程技术网

Sql 长字符串参数化查询

Sql 长字符串参数化查询,sql,r-dbi,exasolution,Sql,R Dbi,Exasolution,我有一个参数化SQL查询,我想从Exasol数据库上的本地R执行,如下所述: 以制表符作为 选择 t、 *, 价值在哪里?as pos 从我的桌子上 从pos>0的选项卡中选择*; 传递给的值?这是一条很长的线。当该字符串长度小于等于2000个字符时,一切正常。当我将其增加到2001个字符时,我得到一个错误: Error in result_bind(res@ptr, as.list(params)) : nanodbc/nanodbc.cpp:1587: 40001: [EXASOL][E

我有一个参数化SQL查询,我想从Exasol数据库上的本地R执行,如下所述:

以制表符作为 选择 t、 *, 价值在哪里?as pos 从我的桌子上 从pos>0的选项卡中选择*; 传递给的值?这是一条很长的线。当该字符串长度小于等于2000个字符时,一切正常。当我将其增加到2001个字符时,我得到一个错误:

Error in result_bind(res@ptr, as.list(params)) : 
nanodbc/nanodbc.cpp:1587: 40001: [EXASOL][EXASolution driver]GlobalTransactionRollback 
msg: data exception - string data, right truncation. (Session: 1640027176042911503) 
我想问题的根源在于我的参数被识别为CHAR而不是VARCHAR。 Exasol用户手册说明: 这两种类型的长度分别限制为2000个字符CHAR和2000000个字符VARCHAR


有什么办法可以投吗?到VARCHAR?

如果通过ODBC建立db连接,可以尝试查看以下参数: MAXPARAMSIZE和DEFAULTPARAMSIZE

可能,如果在odbc配置中将DEFAULTPARAMSIZE设置为更高的值:

当我尝试使用第一个建议的方法来运行教程中描述的参数化查询时,上面的问题已经出现了:。第一种方法使用函数dbSendQuery和dbBind的组合


当我切换到使用sqlInterpolate函数的第二个不太安全的方法时,我的长字符串问题就解决了。

谢谢你的提示。我已经通过使用DBI::sqlInterpolate函数解决了这个问题。