【问题标题】:ADODB.Recordset addnew with an Oracle package field带有 Oracle 包字段的 ADODB.Recordset addnew
【发布时间】:2014-11-11 12:40:49
【问题描述】:

大家好。 我有一个带有 Oracle DB 的 Visual Basic 6 程序。当我向表中添加记录时,我会这样做:

Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("Title") = "Titolo"
Adodc1.Recordset.Fields("Author") = "Autore"
Adodc1.Recordset.Fields("IP") = "10.0.1.1"
Adodc1.Recordset.Update

这个程序没问题,但我想用oracle函数设置IP:sys_context('USERENV','IP_ADDRESS')

当我在

中修改了我的例程时
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("Title") = "Titolo"
Adodc1.Recordset.Fields("Author") = "Autore"
Adodc1.Recordset.Fields("IP") = "sys_context('USERENV','IP_ADDRESS')"
Adodc1.Recordset.Update

表的字段始终为空。 这个问题有解决方法吗? 提前致谢

【问题讨论】:

  • 你认为这应该有效吗?它不只是将该函数作为字符串文字插入吗?
  • 不,它会在 IP 字段中插入字符串“sys_context('USERENV','IP_ADDRESS')”... 我可以修改字段类型吗?
  • 这是它应该做的!我不认为你可以从 ADO 调用 Oracle 函数——反正就是这样。您可以形成一个 INSERT 语句并使用它
  • 好的,谢谢。我已经搜索并尝试了所有 Ado 字段类型,但没有...我将代码转换为执行构建的 sql 语句字符串。 :-(
  • 我已经添加了一个答案

标签: oracle vb6 ado recordset


【解决方案1】:

我认为简单的答案是你不能那样做。正如它所写的那样,您将固定字符串 'sys_context('USERENV','IP_ADDRESS')' 分配到 'IP' 字段中。

要使用该函数,您必须构造一个 INSERT 语句并直接执行它。有点像

INSERT INTO your_table(标题、作者、IP) SELECT 'Titolo', 'Autore', sys_context('USERENV','IP_ADDRESS')

或者,您可以创建一个存储过程并执行它(从长远来看可能会更好)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 2011-10-20
    相关资源
    最近更新 更多