AS400 带参数的 SQL 查询
我正在测试一个简单的查询以从 AS400 数据库获取数据。 我不确定使用 SQL 查询的方式是否正确。
我收到错误:“参数不正确。”
Select FIELD1, FIELD2 From Mylibrary.MyTable WHERE FIELD1 = @Field1
当我运行以下查询时,我没有收到错误:
Select FIELD1, FIELD2 From Mylibrary.MyTable WHERE FIELD1 = 'myvalue'
我正在使用 ADODB、VBScript 进行测试。
Set Param1 = cmd.CreateParameter("@Field1", 129, 1, 9, "myvalue") ' 129 String
cmd.Parameters.Append Param1
我来自 MS Sql 环境,因此为 AS400 编写对我来说是全新的。
谢谢
I am testing a simple query to get data from an AS400 database. I am not sure if the way I am using the SQL query is correct.
I get an error: "The parameter is incorrect."
Select FIELD1, FIELD2 From Mylibrary.MyTable WHERE FIELD1 = @Field1
I don't get an error when I run the following query:
Select FIELD1, FIELD2 From Mylibrary.MyTable WHERE FIELD1 = 'myvalue'
I am using ADODB, VBScript to test.
Set Param1 = cmd.CreateParameter("@Field1", 129, 1, 9, "myvalue") ' 129 String
cmd.Parameters.Append Param1
I am coming from MS Sql environment, so writing for AS400 is totally new for me.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
好吧,我通过尝试不同的事情找到了解决方案。
正如我之前所说,我习惯了 OLEDB 和 ADO.Net,因此我习惯于执行以下操作:
它们在 Access 和 SQL Server 中工作,但在 AS/400 中不起作用。
我得到了以下工作:
这都是 VbScript。 诀窍是在sql语句中添加问号(?)。
Ok, I got the solution by playing around and trying different things.
As I said before, I am used to OLEDB and ADO.Net so I am used to doing things like:
which work in Access and SQL Server but not in AS/400.
I got the following to work:
This is all VbScript. The trick was to add the question mark(?) in the sql statement.
如果您要使用 .NET 连接到 AS400,首先应该使用 IBM.Data.DB2.iSeries 来自 IBM 的 .NET 提供程序。 根据IBM的文档,这是调用sql的首选方法:
If you're going to connect to the AS400 using .NET, first of all you should use the IBM.Data.DB2.iSeries .NET provider from IBM. According IBM's documentation, this is the preferred method for calling sql:
Picflight,
您可能已使用 系统命名进行连接约定而不是 SQL 命名约定。 将 Mylibrary.Mytable(SQL 句点限定符)更改为 Mylibrary/Mytable(系统斜杠限定符)。
Picflight,
You might have connected using the system naming conventions instead of SQL naming conventions. Change Mylibrary.Mytable (SQL period qualifier) to Mylibrary/Mytable (system slash qualifier).