挿入クラッド使用ルビーOCI8

この記事では、c:CRUDでの作成について説明します。

ruby-oci8ドライバーを使用してデータベーステーブルにデータ作成し、シリーズのこの最初の記事の初期設定で作成された接続オブジェクトを使用します。

ステートメントを実行します。:すべてのサンプルコードを確認し、システムに問題が発生しないことが確実な場合にのみ実行してください。

ヘルパー関数を使用してすべての行()を取得し、SQL INSERTステートメントを準備し、人事データを挿入するテーブルと列を指定します。これは、挿入の有効性を検証するために使用されるselectステートメントです。選択機能はこのシリーズの残りの部分で紹介されるので、ここでは繰り返しません。


この関数をファイルの先頭に追加します。

例を簡潔かつ正確に保つために、時々データをリセットします。

データのリセットという名前の新しいファイルを作成します。rbを実行し、データをリセットするときはいつでも実行します。


使用するテンプレートは次のとおりです。


演習ごとに、「#你在Г的コード」の行を自分のコードに置き換えます。

単純な挿入を実行して、lcs_personテーブルにレコードを追加します。これは、return句が役立つところです。

  • SQL INSERTステートメントを準備し、データを挿入するテーブルと列を指定します。
  • ステートメントを解析してカーソルを作成します。
  • 次に、返されたコードを使用します。このコードをRubyセッションで実行すると、次のように表示されます。ペットを追加します。(バインド変数の説明については、このシリーズのrパートを参照してください(
  • 今回は、バインドされたパラメーター配列を使用して、列データを含む配列を各列のバインドされた変数にバインドします。

このコードをRubyセッションで実行すると、次のように表示されます。

画像タイトル

上記の点で気付くでしょう、私はトランザクションをコミットすると言いました

データ操作言語、またはDMLステートメントを実行する場合、たとえば、このペーパーインサートで使用する場合は、会議に表示されるこれらの現在の接続のみを変更します

这些变化将 对其他会话(甚至是连接到进行更改的同一模式的另一个会话(可见,直到您 犯罪 你的改变。 这一步使它在数据库中成为”永久的“,并且其他人都可以看到(并且可能在将来的事务中改变).

1打印新的_id值。 插入多行。

用37岁的罗布和41岁的谢丽尔的数据,你的结果应该是:

画像タイトル


这种方法可以一次插入许多行,但是有一种更好的方法。 我在下面讨论这个问题。

2. 验证第二个连接在提交后才能看到您的更改。

使用”苏西”,31岁,”我喜欢兔子”的数据,假设你做了前面的练习,你的结果应该是:

画像タイトル

请注意,在插入之后,进行插入的连接可以看到苏西,但是第二个连接不能。

提交后,两个连接都会看到苏西.

我修改了模板代码中的帮助函数和获取所有行调用,使它变得简单一些。 如果您选择这数据库实时同步 样做,请在本练习后恢复模板代码。


(仍然和我们的新④,”桑迪” .rb .

您可能已经注意到,该列没有传入,而是自动按顺序设置的。 在神谕数据库12c之前,这是使用序列和触发器完成的。

在12c中,这可以通过使用身份列来完成。


You can find more information on identity columns
here (PDF).
Sometimes we need to perform additional operations after an insert using data generated by the database, such as the identity column above. 这里(PDF)。

有时,我们需要在插入后使用数据库生成的数据执行额外的操作,例如上面的标识列。 这里(PDF).

有时,我们需要在插入后使用数据库生成的数据执行额外的操作,例如上面的标识列。 例如,让我们为他们添加一个人和一个宠物。 我们 能够

  • 运行插入,然后使用名称选择值。
  • 但是如果名字不是唯一的,我们就有问题了。
  • 如上所述,当您想要插入多行时,运行多个插入语句效率很低,并且需要多次访问数据库,因此我们将使用exec _数组.
  • 我们将执行插入操作,将一条记录添加到lcs _人员表中。
  • 将三个参数绑定到它们的值。 这些是在下面的代码片段中执行的步骤。.
  • 将三个参数绑定到它们的值。
  • 绑定编号参数,将其定义为Fixnum类型。
  • 将返回的编号存储在
  • 新id(_ d)
  • 执行语句。
  • 准备一个SQL INSERT语句,指定要插入宠物数据的表和列。
  • 将所有者参数绑定到新的_id值,将名称和类型绑定到”大红”和”马” .
  • 执行语句。

提交两个事务。

画像タイトル

执行语句。 准备一个结构化查询语言语句。将所有者参数绑定到新id(_ d)值。 注意 用一点装饰文字打印结果。 id 注意

新难度动作

编号

画像タイトル

物主桑迪的宠物和桑迪的 编号在新数据中,这三个都是。


3.再次插入桑迪,但返回她的身份证和姓名。

您的结果应该是:注意③,”桑迪” . 现在是运行reset_data的好时机。

(但返回的编号是4 . 它应该在每次运行时返回新的id .

  • 现在是运行reset_data的好时机。
  • rb .
  • 这些是在下面的代码片段中执行的步骤。
  • 当您的数据库能够像神谕一样进行批量处理时,驱动程序将创建一个更高效的批量事务。 我们将执行一个插入操作,将两条记录添加到lcs _人员表中。
  • 这些是在下面的代码片段中执行的步骤。
  • 准备一个SQL INSERT语句,指定要插入人员数据的表和列。

我们需要通过设置最大数组大小让驱动程序知道需要多少记录。

画像タイトル

  • トランザクションを送信します。exec_arrayを使用してステートメントを実行します。これにより、挿入された行数が返され、personnel_row_countに格納されます。
  • トランザクションを送信します。挿入されたレコードの数を出力します。このコードをRubyセッションで実行すると、次のように表示されます。

おすすめ

転載: blog.csdn.net/weixin_49470452/article/details/107506041