如何避免问号字符的 ODBC 参数化?在文字和注释中?

发布于 2024-09-11 12:14:23 字数 301 浏览 4 评论 0原文

我遇到了一个问题,其中有问号字符“?”在我的 SQL 脚本中,注释引起了问题。当我使用 Visual FoxPro SQLEXEC 函数通过 ODBC 连接运行这些语句时,这些字符被视为参数,并且 VFP 提示输入值。

使用 SQLEXEC 时,我可以选择哪些选项来处理注释中的问号字符?我希望我可以了解如何关闭参数化,或者了解如何在将字符串作为命令传递之前转义这些字符。到目前为止,我还没有找到这种解决方案的任何证据,因此看起来我可能必须删除所有不需要的注释,因为它们通常是为存储过程创建语句,我们希望保留这些注释。我希望有人能有一个比完全删除评论更令人满意的解决方案。

I'm running into an issue where I have question mark characters '?' within my SQL scripts inside comments is causing problems. When I run these statements through an ODBC connection using the Visual FoxPro SQLEXEC function these characters are being seen as parameters and VFP prompts for values.

What are my options for dealing with question mark characters within comments when using SQLEXEC? I'm hoping that I may be either to some how turn off parameterization or alternatively to some how escape these characters before passing the strings as commands. So far I haven't found any evidence of such a solution so it looks like I may have to strip out all comments which is undesirable because they are generally create statements for stored procedures and we would like to preserve these comments. I'm hoping somebody might have a more pleasing solution than stripping out the comments completely.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

马蹄踏│碎落叶 2024-09-18 12:14:23

看起来这可能是一个已知问题SQLEXEC 在遇到问题时不考虑 SQL 命令中的注释标记字符 ?通常代表 ODBC 中的参数,同样也代表 VFP 中的参数。

只是一个警告 - VFP 的解析器会
捕获 SQL 中的任何问号
字符串,即使它在 SQL 中
评论(即在以
-- 或括在 /* */) 之间,如果没有任何内容,则会出错
那里可以有一个变量。如果它
可以是一个变量,但你没有
它在运行时定义,你会得到一个丑陋的
输入框来输入它。更糟糕的是,你的用户
明白了。

所以要小心。 ——德拉甘·内德尔科维奇

It appears that it may be a known issue that SQLEXEC has no regard for comments in the SQL command when encountering question mark characters ? which normally represent parameters in ODBC and likewise in VFP.

Just a warning - VFP's parser will
catch any question mark in the SQL
string, even if it's within a SQL
comment (i.e. on a line beginning with
-- or bracketed between /* */) and will error out if there's nothing
there that can be a variable. If it
can be a variable but you don't have
it defined at runtime, you get an ugly
inputbox to enter it. Worse, your user
gets it.

So watch out. -- Dragan Nedeljkovich

在梵高的星空下 2024-09-18 12:14:23

你试过用ascii代码替换它吗?类似于:“+chr(63)+”

have you tried replacing it with the ascii code? Something like: '+chr(63)+'

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文