[Seasar-user:4028] Re: S2Daoで任意のテーブルに切替えたい
Kazuya Sugimoto
[E-MAIL ADDRESS DELETED]
2006年 7月 6日 (木) 16:46:24 JST
杉本です。
私も同じ事をしたことがあります。
ただし、S2Dao.NETだったのですが、S2Daoでも同じ方法でできるはず。。
select * from XXX/*$date*/
のようにバインド変数に$を付けてみてください。
06/07/06 に 関さんは書きました:
> 関です
>
> 題名の通り、S2Daoを使ってテーブルを切替える方法は有りますか?
>
> S2Daoを使用してみようと思ったシステムは、
> テーブル定義は同じですが、新しいテーブルが毎日作成されます。
>
> 例:
> XXX20060701
> XXX20060702
> XXX20060703
> XXX20060704
>
> この状況でDAOのBEANにテーブル名を記述するには、毎日新しいクラスを作成する事になるのでは?
> と言うことで質問させて頂きました。
>
> 試したことは以下の通りです。
>
> 1.文字列で渡す
> ☆DAOの定義
> public List selectAll(String tableName);
> public static final String selectAll_SQL = "SELECT * FROM /*tableName*/XXX20060101";
>
> ☆実行部分
> List xxx = dao.selectAll("XXX20060702");
>
> ☆結果
> SQLが
> SELECT * FROM 'XXX20060701'
> となり(テーブル名にシングルクォートが入って)エラー
>
> 2.文字列で渡す(実行部分の引数を変えてみた)
> ☆DAOの定義
> public List selectAll(String tableName);
> public static final String selectAll_SQL = "SELECT * FROM /*tableName*/XXX20060101";
>
> ☆実行部分
> List xxx = dao.selectAll("\"XXX20060702\"");
>
> ☆結果
> SQLが
> SELECT * FROM '"XXX20060702"'
> となりエラー
>
> Caused by: java.sql.SQLException: ORA-00903: 表名が無効です。
>
> 3.数字で渡す
>
> ☆DAOの定義
> public List selectAll(int tableValue);
> public static final String selectAll_SQL = "SELECT * FROM XXX/*tableValue*/20060101";
>
> ☆実行部分
> List xxx = dao.selectAll(20060702);
>
> ☆結果
> 以下の様なエラー出力とともにエラー
>
> org.seasar.framework.exception.SQLRuntimeException: [ESSR0071]SQLで例外(ErrorCode=933, SQLState=42000)が発生しました。理由はorg.seasar.framework.exception.SSQLException: [ESSR0072]SQLで例外(SQL=[SELECT * FROM XXX?], ErrorCode=933, SQLState=42000)が発生しました
> ... 中略
> Caused by: org.seasar.framework.exception.SSQLException: [ESSR0072]SQLで例外(SQL=[SELECT * FROM XXX?], ErrorCode=933, SQLState=42000)が発生しました
> ... 中略
> Caused by: java.sql.SQLException: ORA-00933: SQLコマンドが正しく終了されていません。
>
> 4.意味はないけどSQLコメントの中身を消してみた
>
> ☆DAOの定義
> public List selectAll(int tableValue);
> public static final String selectAll_SQL = "SELECT * FROM XXX/**/20060701";
>
> ☆実行部分
> List xxx = dao.selectAll(20060702);
>
> ☆結果
> 正常 = XXX20060701 のデータの取得可能
> (引数とかは無視されるのかな??)
>
> S2Daoでテーブルの切替
> http://www.seasar.org/wiki/index.php?AnsweringYourQuestions#n4635c3d
> と言うのも発見したのですが、既知の既存テーブルを切替える方法でした。
>
> 未来に作成されるテーブルに切替える方法がありましたらお聞かせ下さい。
>
>
> よろしくお願い致します。
--
Kazuya Sugimoto
http://d.hatena.ne.jp/sugimotokazuya/
Seasar-user メーリングリストの案内