AベストアンサーPL/SQLでつくってみました。LOOP;return(Result);end;PL/SQLでつくってみました。--大文字にして格納(全角もとりたい場合はさらにTO_SINGLE_BY...続きを読む他の回答も見るQSELECTで1件のみ取得するには?こんにちわ。いまORACLE9iを使用している者です。項目名;で並べ替えたデータ群のうち,先頭の1件だけを取ることができますが,ORACLEでそのような機能(SQL)はあるでしょうか?教えてください。併用する場合は注意が必要です。desc;とすると、「1001」ではなく、「1000」が返されます。適用されてしまうからです。1;とすれば良いです。(*)更新される【やりたいこと】TBL_A表のA2列のデータにTBL_B表のB2列のデータを加算したい。その場合の更新条件として「A1がB1に存在している場合のみ」という条件を加えたいのです。すいませんが、よろしくおねがいします。B.B1と書いても、「B.B1」がなんのことか、DB側には分かりません。EXISTSはあくまで、「Bに存在する行を」という更新の対象の行を絞る条件にしかならないので、SET文でBのB1値を使いたいなら連結しなくてはいけません。A.A1=B.B1)こんなかんじです。ちなみにEXISTS文なりなんなりの「A1がB1に存在している場合のみ」というWhere句は必要です。上記のSQLにEXISTS文がない場合、Bに存在しないAの行(A1が2と5の場合)もUPDATE文の対象となり、Bとの連結の結果がNULL値になるので、その行のA2の値がNULLで更新されてしまいます。NULL値の加算はNULLだからです。↓以下のようになります。試してみてはいかがでしょうか。B.B1と書いても、「B.B1」がなんのことか、DB側には分かりません。EXISTSはあくまで、「Bに存在する行を」という更新の対象の行を絞る条件にしかならないので、SET文でBのB1値を使いたいなら連結しなくてはいけません。EX...続きを読む他の回答も見るQViewにインデックスは張れますか?件名の通りなのですが、作成したViewが遅くて困っています。改善方法としてはViewを作成しないで従来のSQLにインデックスを張って取得する方法にしようかなと考えています。なにかいい方法はありますか?AベストアンサーViewの元テーブルに適切なIndexを貼る、ではいけないのですか?他の回答も見るQOracleでの文字列連結サイズの上限Oracle9iでテーブル内容をスプール出力していますが、カラム単位で余白を削除したい(トリムをかけたい)ので以下のようにカラムを連結させてスプールしています。各項目にMAXの値を入力して上記スプールを実行したところ、以下のエラーメッセージが出力されました。文字列を連結した結果、長さが最大長を超えました」データを連結した結果の長さが上限を超えたということなのでしょうが、この最大長はどこで設定されているものなのでしょうか?また、そもそもスプール出力でトリムが効かないためにこのようなやり方で出力していますが、他によい方法をご存知の方いましたら教えて下さい。どのような理由からでしょうか?以下のSQLで4000バイトオーバーは可能です。Tipsをお勧めしました。どのような理由からでしょうか?以下のSQLで4000バイトオーバーは可能です。Tipsをお勧めしました。Inc.Q質問する(無料)Q&A検索goo検索gooIDで新規登録・ログイン新規登録する(無料)会員の方はこちら外部サービスのアカウントで新規登録・ログインYahoo!で新規登録・ログインGoogleで新規登録・ログインTwitterで新規登録・ログインFacebookで新規登録・ログインdアカウントで新規登録・ログイン※各種外部サービスのアカウントをお持ちの方はこちらから簡単に登録できます。お客様の許可なしに外部サービスに投稿することはございませんのでご安心ください。会員でない方、会員になるとあなたも質問や回答ができるようになります!!親切・丁寧な回答が集まる場30分以内に回答がもらえ回答数は平均3件!匿名(ニックネーム)での投稿なので。