• ベストアンサー

フィールドのサイズの取得

varchar(40)でCREATE TABLEしたテーブルから、40という部分を取得する方法を教えてください。 rsを利用して40を取得できないでしょうか? sql = "CREATE TABLE shain (usrname varchar(40),,," dbc.Execute(sql) sql = "SELECT * FROM shain" set rs = dbc.Execute(sql)

  • Oracle
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

補足です。number型の場合は PrecisionプロパティとNumericScaleプロパティで取得可能です。 number型かどうかはTypeプロパティで識別可能だと思います。

jsagty
質問者

お礼

ありがとうございます。 Precisionなら作成した列の型のサイズではなく、その型のサイズが返されるみたいでした。

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

charやvarchar2なら rs!username.DefinedSize で取得できると思います。ただ、numbher型で宣言している場合は正しい 結果を返しません。

関連するQ&A

  • sqlの結果のrsからフィード数を得る方法

    sql = "select a,b from t" Set rs = dbc.Execute(sql) ここでは2が得られる。 sql = "select a,b,c,d,e from t" Set rs = dbc.Execute(sql) ここでは5が得られる。 というのやりたいのですが、2や5をrsから得られないでしょうか? sqlのa,b,c,d,eの部分が固定ではなくaspプログラムで動的に作るのでrs.Fields()ではなくてrs()で取得しようとしています。

  • ストアドファンクションの戻り値をテーブルに・・

    SQL/PLUSにて作成したファンクションの戻り値で返ってきた文字列をテーブル名として使用するにはどうすればよいのでしょうか?? まず以下のようにSQL/PLUSにてFUNCTIONを作成しました。 create or replace function FuncXXXXX (inA varchar2) return varchar2 is OutA varchar2; begin select MAX(table_name) into outA from all_tables where table_name like inA || '%'; return outA end; / それを以下省略ですが、テーブルでコールしようとするとエラー(ORA-00905:キーワードがありません)が発生します。このような使い方はできないのでしょうか? select   ・   ・ from AAAA inner join FuncXXXXX(inA) ※execute FuncXXXXX(inA)でも同様 on   ・   ・ 申し訳ありませんが宜しくお願いします。

  • MySQLからフィールド名のリストを取り出し、一部のフィールド名を除外したい場合

    PHP + MySQLにて テーブルからフィールド名だけを取得し、さらに一部のフィールド名を除外したいです。 レコードじゃないのでis not構文は使えませんでした。 何かいい方法があれば教えてください。 $sql = "select * from table"; //tableテーブルからフィールド名を取り出し $rs = mysql_query($sql); $fields = mysql_num_fields($rs); $column = array(); for ( $i=0; $i<$fields; $i++ ) { $column[$i] = mysql_field_name($rs, $i); }

    • ベストアンサー
    • MySQL
  • LONG型の先頭250バイトを Varcharとして取得できますか?

    お世話になります。 Long型列の先頭250バイトが欲しいのですが Select Substr(FIELD01, 1, 250) from TABLE01 とすると、 ORA-00932 が返ってきてしまいます。 なにかいい方法ありませんでしょうか? できれば、PL/SQLは使いたくなく、別テーブルをCreate Table as Selectも避けたいです。

  • PL/SQLのCREATE文でCHAR型で項目ができない

    PL/SQLで以下のようにCREATE文を発行しました。 Bテーブルの項目 項目1,'1'を持つテーブルを作成したいのです。 DECLARE  KBN CHAR(1);  WK_SQL VARCHAR2(4000); BEGIN  KBN := '1';  WK_SQL := 'CREATE TABLE A_TBL AS    SELECT B.項目1 , ' || KBN || ' AS A項目    FROM B_TBL B ' ;  EXECUTE IMMEDIATE WK_SQL; END; 結果はA_TBLの項目、A項目がどうしてもNUMBER型になるのです。初心者で、質問に不備なところもあるかもしれませんが、どうすればよいか、ご教授ください。

  • 日付型項目のNULLについて(PostgreSQL)

    よろしくお願いします。 下記内容のtest_tableを作成して ---- CREATE TABLE "test_table" ( "id" varchar(10) NOT NULL, "fdate" date ); ---- 下記内容のデータを登録しました。 ---- insert into test_table(id,fdate) values ('abc',NULL); ---- 下記のsqlでデータを取得できませんでした。 どうしてでしょうか? select * from test_table where fdate = NULL;

  • insert後のプライマリキーの取得

    タイトルの通りなのですが テーブルがこんな感じでtest_stringをインサートしてその後に test_idを受け取りたいのですが何か方法はないでしょうか。 CREATE TABLE test ( test_id int(8) AUTO_INCREMENT , test_string VARCHAR(100), PRIMARY KEY (test_id) ); こんな風にしても1ばかり返ってきます。 String sql = "SELECT * FROM test;" int primarykey = st.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS);

  • ダイレクトインサートでテーブル作成時カラム長を指定

    oracle10g standard 下記のようなsqlでviewをtable化するとvarchar2のカラム長が固定で4000になります。 長さを指定することはできますか? create table test as select * from view;

  • SELECT文の二段重ね

    次のSQL文を実行します。 create table1 (id, english) insert table1 (1,"foo") insert table1 (2,"bar") create table2 (id, japanese) insert table2 (1, "ふー") insert table2 (2, "ばー") SQL文法としては誤ってますが、成功したとします。 いま、select id from table1 where english = 'foo'; で1が得られます。 いま、select japanese from table2 where id = 1; で"ふー"が得られます。 これを一つのSQLite3のselect文で実現できないでしょうか。 select japanese from table2 where id = (select id from table1 where english = 'foo'); で良いですか? カテゴリ選択にSQLiteが無いのは、人気が無いからですかね。

  • AccessのSQLで、レコード数の取得方法を教えてください。

    すみませんが、教えてください。 AccessをADO+SQLで操作しています。 cnn.Open **** sql="SELECT hoge FROM tabeleHoge;" set rec=cnn.Execute(sql) で、recオブジェクトから、レコード数を取得する方法ってあるのでしょか? sql="SELECT COUNT(*) FROM tableHoge;" を使わずに、できれば、嬉しいのですが。 以上、よろしくお願いいたします。