我輩はブロガーではない。ネタもまだない

SASとかDelphiあたりの人様の役に立たないネタを提供します

CDATA SAS.dsを使ってみる(その3:CRUD編)

CDATA SAS.dsを使ってみる(その1:データセットアクセス編)
CDATA SAS.dsを使ってみる(その2:属性編)

に続き、CDATA SAS dataset Firedac componentの検証記事(とりあえず最後)です。
(いずれも検証時点で入手可能なβ版 21.0.7829 を使用しています)

さて、最後の回はSQLで重要なCRUDについての検証結果です。


C:Create tableのプロパティ

実行するSQLは以下の通り

create table NEWDS (name VARCHAR(20), age INT);

結果は…
f:id:japelin:20210615091323p:plain

正常に作成されたように見えますが、SASで開くと…

f:id:japelin:20210615092608p:plain
一部の属性が正しくない

文字コードがwlatin1固定なのでこのデータセットに日本語をinsertすると、文字化けします。
作成バージョンがWin8 pro 64bit、SAS9.4 M2なのは開発バージョンなんでしょう。
Win8?と思いましたが、M2にはホストバージョンを正しく取得できないというバグがあったはずなので、それもあるかもしれません。

できれば、Shift-jis、utf-8文字コードを指定したいところです。


R:Read

すでに前回の記事にまとめた通り、暗号化データセット、圧縮データセット以外はアクセスできそうです。


U:updateできない

実行するSQLは以下の通り

update test set i=0;
f:id:japelin:20210614170110p:plain
updateは失敗します。(まだ?)サポートされていないようです

D:Deleteできない

実行するSQLは以下の通り

delete from test;
f:id:japelin:20210614170525p:plain
delete失敗。こちらも(まだ?)サポートされていない

insertは動く

実行するSQLは以下の通り

insert into NEWDS (name,age) values ('Taro',30),('山田',31);
insert into test (char,i) values ('',200);
f:id:japelin:20210615102254p:plain
wlatin1データセットのため、日本語は文字化けしてしまう
f:id:japelin:20210615103621p:plain
もともと存在するShift-jisデータセットであれば、日本語もOK

Dropは基本的にはOK

最初に作成したNEWDSに対して、以下のSQLを実行します

drop table NEWDS;

dropに限らずなのですが、firedac経由ではcase sensitiveなようで、大文字小文字を正しく指定しないとアクセスできません。

f:id:japelin:20210615093047p:plain
見つからないと出てしまう。なぜかcase sensitiveな模様…

以下のコードであれば正しくテーブルが削除されます

drop table newds;


なお、検証時に再現しなくなってしまったのですが、DROP TABLEでテーブルを削除すると、0KB、空のSASデータセットになってしまうという現象に遭遇しました。



なお、今回の一連の検証結果についてはCDATAの担当者に連絡済みで、すでに検証が始まっているそうですので、改善もしくは対応されることを期待しています。