こんにちは。教えてください。
PL/SQLを使うのが初めで戸惑っています。
まず、PROCEDUREで
===========================
BEGIN

SELECT NAME FROM TABLE1 WHERE NAME='tanaka';

END;
/
===========================
このように書いて実行させようとすると、「コンパイルエラー」
「INTO句はこのSELECT文に入ります」というエラーが出ます。
SQLの文法的には間違ってないと思うのですが、INTO句とはこれいかに??

ネットでPL/SQLで検索かけて調べたのですがあまりにも初歩すぎて
わかりませんでした。
PL/SQLやORACLEのメーリングリストでお勧めがありましたら教えてください。
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

コーディング例です。



**************************************************
*非ループ処理の例
**************************************************
.CREATE OR REPLACE PROCEDURE JOB1
.IS
.
.  w_NAME1  CHAR(10);
.
.BEGIN
.
.  SELECT NAME1 INTO w_NAME1 FROM TABLE1
.  WHERE TBL1_KEY = 'tanaka';
.
.  UPDATE TABLE2 SET NAME2 = w_NAME1
.  WHERE TBL2_KEY =  'tanaka';
.
.  COMMIT;
.
.EXCEPTION
.  WHEN OTHERS THEN
.    ROLLBACK;
.END;
./
**************************************************
*ループ処理の例
**************************************************
.CREATE OR REPLACE PROCEDURE JOB2
.IS
.
.  w_TABLE1 TABLE1%ROWTYPE;
.
.  CURSOR  c_TABLE1 IS
.  SELECT  NAME1
.  FROM   TABLE1
.  ORDER BY NAME1;
.
.BEGIN
.
.  OPEN c_TABLE1;
.
.  LOOP

.    FETCH
.      c_TABLE1
.    INTO
.      w_TABLE1;
.    EXIT WHEN c_TABLE1%NOTFOUND;
.
.    UPDATE TABLE2 SET NAME2 = w_TABLE1.w_NAME1
.    WHERE TBL2_KEY = w_TABLE1.w_TBL1_KEY;
.
.  END LOOP;
.
.  CLOSE c_TABLE1;
.
.  COMMIT;
.
.EXCEPTION
.  WHEN OTHERS THEN
.    ROLLBACK;
.END;
./

先頭のピリオドは無視してください。どこかにミスがあったらごめんなさい。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ご丁寧にコードでの解説、すごくわかりやすかったです。
実際mori0309さんのコーディングを参考に実行してみたら
値を取得することができました。
今回の業務はこれで事足りるのですが、これからも使うことがあると思うので
ちゃんと理解するよう勉強したいと思います。大変参考になりました。
どうもありがとうございました。

お礼日時:2001/05/14 22:14

こんにちは、jotarou といいます。


コーディングは、ishmaster さんので良いと思います。

>ネットでPL/SQLで検索かけて調べたのですがあまりにも初歩すぎてわかりませんでした。

これに関しては、”暗黙カーソル”と入れてお調べください。

>SQLServerで使っていたSQLでは通用しないのでしようか・・・。

 難しいとは聞いているのですが、全くの初心者でないのでしたら、通用する部分があると思いますけど・・・。

では・・。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
教えていただいたとおり、暗黙カーソルでたくさんヒットしました。
まず、カーソルとはなんぞや、から勉強しないといけません。
一冊本を買ってじっくり取り組もうと思います。
みなさんに教えていただいたこと大変勉強になりました。
また質問することもあると思いますがよろしくお願い致します。

お礼日時:2001/05/14 22:12

PL/SQLでSelect文を使うときには、カーソルなり変数(ishmasterさんの言っている領域)に代入する必要があります。

でないと、Select文で引っ張ってきたデータを使うことができません。
変数・カーソルへの代入というと構文が少し変なのですが、ishmasterさんの構文でデータベースからデーターを持ってこれると思ってください。

PL/SQLは、Select文は普通のSQLと少し違いますが、INSERT、DELETE、UPDATEはほとんど普通に使えます。ただし、CREATE、DROPなどは原則として使えません。(方法はありますが・・・)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
私はVBやAccessのように単純なSQLをぽんぽんと並べれば
実行してくれるのかと勘違いしていました。
そうではないんですね。
少し勉強しないとだめみたいです。
みなさんに教えていただいたことを頭にいれてがんばりたいと思います。
ありがとうございました。

お礼日時:2001/05/14 22:08

SELECT NAME INTO work FROM TABLE1 WHERE NAME='tanaka';


じゃないでしょうかねえ。
INTOで読み込まれる領域を指定するんではないかと。
PL/SQLは知りませんが。

この回答への補足

さっそくの解答ありがとうございます。
領域ですか。
領域とは・・・・・・・????

環境を書き忘れていました。
WinNT4.0(SR6)
Oracle8
ObjectBrowser7.0
です。

OracleもObjectBrowserも使うのが初めてで右も左もわからない状態です。SQLServerで使っていたSQLでは通用しないのでしようか・・・。

補足日時:2001/05/11 17:36
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
せっかく教えていただいたので理解力不足ですみませんでした。
みなさんの回答を参考に、しっかり勉強致します。
ありがとうございました。

お礼日時:2001/05/14 22:16

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q韓国語が漢字ハングル混じり文だったら韓国語学習者は増えているか?

もし今の韓国で、普通に見る文章や看板が
漢字ハングル混じり文だったら、
日本人の韓国語学習者は今よりもっと増えたでしょうか?
勿論、今の韓国の状態は同じという前提で。
また、もっと早いうちから韓国語を勉強する人は沢山いたでしょうか?
それと、客観的に見て、漢字ハングル混じり文だったら、
日本人が韓国語を見て感じることも違っていたと思いますが、
やはり今の中国語(普通話)より見た感じとして、
分かり易く感じたですよね?
最後に漢字ハングル混じり文が前提として、
日本人が漢字ハングル混じり文での韓国語を勉強する場合、
ハングルだけと違って、どういうところが
難しく感じるでしょうか?
では回答をお待ちしています。

Aベストアンサー

「学習者」というレベルの人数はあまり変わらないかもしれません。しかしそれ以前の、興味があるレベルの人は大幅に増えるでしょう。
一般人がハングルのみの看板を見た印象は「マルサンカクシカク」(△は無いけど)で、即思考停止になってしまいますが、これが漢字を使ってあれば少なくとも中国語並みには意味は分かります。看板の文字は大抵漢字語でしょうし。
また、中国語の簡体字はまったくの未知なもので知らなければ読めませんが、韓国語の旧字体は日本でも使われていたものですからどこかしらで見たことのある字がほとんどでしょう。

そういえば、日本が旧字体・旧かなを使っていた時期の方が絶対的に韓国語は勉強しやすかったんですよね。今になって韓流ブームだとか言ってももう共通性が薄くなってきてしまっている。

漢字ハングル混じり文の難しい点ですが、特に思いつきません。
漢字の読みも覚えなくてはならず覚えることが増えるという意見もあるでしょうが、覚える量が多ければ覚えにくいかというと必ずしもそうではなく、関連付けて覚えられる分だけむしろ簡単に覚えられます。
その辺の入門書でも漢字語を漢字で書いてくれないことが多くて辟易します。これはこういう漢字だろうな、と思いながら読んでいて後で辞書を引こうかと思いつつ忘れてしまいます。ここで漢字+振りハングルで書いてあったらどんなに楽なことか。
ついでに日本語も旧かなで…それはやりすぎか。

No4さんが「日本になじみの無い漢字語だと漢字+意味を覚えなくてはならない」とおっしゃっていますが、これも関連付けられる分だけむしろプラスに作用すると思います。
実際No4さんの上げる例を見て私は、意味が分かりやすく発音だけより覚えやすくなったと感じました。

また、読めなくて困るということですが、読む必要に駆られるくらいの状況になるころには漢字の読みなど覚えてしまっているでしょう。
そもそも「読めなくて困る」のと「意味が分からなくて困る」のとどっちがましかという問題もあります。これは今の日本のかな混じり表記の問題にも繋がってきますが。

「学習者」というレベルの人数はあまり変わらないかもしれません。しかしそれ以前の、興味があるレベルの人は大幅に増えるでしょう。
一般人がハングルのみの看板を見た印象は「マルサンカクシカク」(△は無いけど)で、即思考停止になってしまいますが、これが漢字を使ってあれば少なくとも中国語並みには意味は分かります。看板の文字は大抵漢字語でしょうし。
また、中国語の簡体字はまったくの未知なもので知らなければ読めませんが、韓国語の旧字体は日本でも使われていたものですからどこかしらで見たことの...続きを読む

QPL/SQLでFROM句に変数を使いたい

PL/SQL初心者なので方法があるかないかもわかりません。
SELECT TABLE_NAME
FROM USER_TABLES
で取得したテーブルを
PQL文に使用したいのですが可能ですか?
一応動的(DBMS_SQLを使用した方法)にSQLを作成することはできたのですが
パフォーマンスを考えると静的に使用したいのです。
動的、静的の表現でいいのかわかりませんが普通に
PL/SQL中にSQL文を使いたいんですがいかがでしょうか?

Aベストアンサー

再びです。
はっきり結論付けなくてすみません。

完全に否定したわけではありませんが、以前サポートに似た質問をしたところできないといわれました。

あとパフォーマンス的にとおっしゃっていますが、作り方によりますが、SQL文のアクセスパスパスが決まらないのは、PL/SQL内の固定SQL文も、動的SQL文も同じだと思います。差が出るのは、SQL文自身の解析が、固定SQL文と動的SQL文の違いになると思いますが、以前テストしてみたら、その部分は大きな差はなかったと思いますが・・・。

いずれにしても、たいした力になれなくて申し訳ありません。

Q○韓国語で次の文をお答えいただきたい。 1/ドリンクを楽しみながら、温泉に入れることができます 2/

○韓国語で次の文をお答えいただきたい。

1/ドリンクを楽しみながら、温泉に入れることができます

2/トイレはこちらになります

3/この先、行き止まりになります

○質問

韓国語には敬意を表することばは
ありますか。

Aベストアンサー

1.
음료를 즐기며 온천을 이용할 수 있습니다.

2.
화장실은 이쪽입니다.

3.
이 앞쪽으로는 길이 막혀있습니다.
(통행금지 : 通行止め)

敬意を表す言葉とは具体的にどのようなことでしょうか?

QSQLとPL/SQLの違いなど

いま会社でPL/SQLのシステムを構築する話が持ち上がっているのですが
SQLとPL/SQLでどのような違いがあるのかがいまいち分かりません。
あと、PL/SQLの開発システムを導入しようとするときに
どのようなソフトを入れればよいのかも、よく分かっていない始末です。

単純な質問なのかもしれませんが、わかる方よろしくお願いします。

Aベストアンサー

>SQLとPL/SQLでどのような違いがあるのかがいまいち分かりません。

簡単に言いますとBASICに似た構文のプログラムをオラクル(DBMS)がSQLと同じレベルで処理してくれるものです。
他のデータベースで言うところのストアドプロシージャと同じですからロードはオラクル内に格納されオラクル内で実行されます。


>あと、PL/SQLの開発システムを導入しようとするときにどのようなソフトを入れればよいのかも、よく分かっていない始末です。

サーバにオラクルがインストールされていれば何もいらないと思います。
もちろん開発はテキストエディタになってしまいますが。

Q韓国語(ある1文)を教えて下さい

「この手紙を○○さんにお渡し下さい」という1文の韓国語を教えて下さい。

留学中に親しくしていた韓国人の友人に手紙を送りたいのですが、彼女の実家の住所しかわからないので(彼女は結婚して実家を出ている)、取り合えず実家に送ろうと思っているのですが、英語がわからないご両親にも一目瞭然で彼女に渡して頂けるように、封筒の表にこの1文を書こうと思っています。

どうぞよろしくお願い致します。

Aベストアンサー

ここに書くと文字化けするので、下記URLで
『この手紙をAさんに渡してください』
と入力して、翻訳して下さい。
http://tool.nifty.com/globalgate/

QPL/SQL ORA-06502エラーに関して(動的SQL)

こんにちは、いつもお世話になっております。
現在、会社で動的SQLを使用してとある開発をおこなっているのですが、
どうしても上手くいかないので、どなたか教えて下さいm(__)m
下記の動的SQL文で最後から2行目のSQL:DBMS_OUTPUT.PUT_LINE(varDel);
を実行するとORA-06502: PL/SQL:
数値または値のエラー: 文字列バッファが小さすぎます。のエラーが
発生します、過去ログやgoogleで検索をかけてみたのですが、
どうにも解決方法がわからず困っています・・・・
お知恵のある方、教えて下さいませm(__)m
※多分、sql文が長いせいだとは思うのですが、どうしても
これ以上は短くできず、静的ではなく、動的で動かさなければならない
という条件付きなんですが、宜しく御願いします。

DECLARE
numkeepD NUMBER := 0; -- データ保管期間格納用
varAST VARCHAR2(4) := '**'; -- アクセス区分定義外格納用
varkeepD VARCHAR2(2000); -- KEEP_DAYS取得SQL文格納用
varDel VARCHAR2(2000); -- DELETE文格納用

BEGIN
varkeepD := 'SELECT KEEP_DAYS FROM SMCI4T910 WHERE ACC_KBN = '''||varAST||'''';
DBMS_OUTPUT.PUT_LINE(varkeepD);
EXECUTE IMMEDIATE (varkeepD) INTO numkeepD;
DBMS_OUTPUT.PUT_LINE(numkeepD);
-- アクセスログデータ削除SQL文格納
varDel := 'DELETE FROM '||cTABLE_STCI1T910||' ST910 '
||'WHERE '
||'ST910.DELETE_FLG = SCIS_CTS.cDEL_NO AND '
||'EXISTS('
||'SELECT 1 '
||'FROM SMCI4T910 SM910 '
||'WHERE '
||'ST910.ACC_KBN = SM910.ACC_KBN AND '
||'ST910.ACC_CYMD < TO_CHAR(SYSDATE - SM910.KEEP_DAYS,''YYYYMMDD'') AND '
||'ST910.ACC_KBN <> varAST AND '
||'SM910.DELETE_FLG = SCIS_CTS.cDEL_NO)';
DBMS_OUTPUT.PUT_LINE(varDel);
--EXECUTE IMMEDIATE (varDel)
END;

こんにちは、いつもお世話になっております。
現在、会社で動的SQLを使用してとある開発をおこなっているのですが、
どうしても上手くいかないので、どなたか教えて下さいm(__)m
下記の動的SQL文で最後から2行目のSQL:DBMS_OUTPUT.PUT_LINE(varDel);
を実行するとORA-06502: PL/SQL:
数値または値のエラー: 文字列バッファが小さすぎます。のエラーが
発生します、過去ログやgoogleで検索をかけてみたのですが、
どうにも解決方法がわからず困っています・・・・
お知恵のある方、教えて下さいませm(...続きを読む

Aベストアンサー

ごめんなさい、"SUBSTRB"の方がいいですね。

文字数ではなくバイトで切り出しです。

Q韓国語の文を日本語翻訳お願いします!

キムヨナ選手のサイトに載っていた韓国語の文です。
コピーして翻訳しようとしたら、、
できませんでした・・・

画像で見にくいと思いますが
どなたか日本語に訳してください・・・。

Aベストアンサー

普通にコピーできますけど。
もしかしてメモ帳などのテキストエディタにコピペしようとしていませんか?
ハングルの文字を取っておくなら、ワードやエクセルなどにコピペしてください。

私も勉強中なので細かいところはわかりませんが、大体、おおまかに以下のような事が書いてあると思います。

-----------------------

皆さんこんにちは ^^

2月25日は、ご存知の通り、私がオリンピックの夢をかなえてから1周年になる日でした。
パチパチパチ!!

韓国日では26日ですが・・・時間が経つのは本当に速いですね。ふふ

いまだに、よく考えてみても、実感できていない時が多いんです。

いつ実感できるんでしょうか・・・ふふふ

この1年間、いろいろと忙しく気ぜわしい365日でした。へへ。

もうすぐ世界選手権大会も近づいてきて、皆さんに久しぶりに氷上の私の姿をお見せできることになりました!

長らくお待たせしてごめんなさい m(_ _)m

お待たせした分、さらに最善を尽くしたいと思います ^^

一月後、見てくださいね ^^ ピョン!

-----------------------

(最後のピョンは、感情の高揚を表しています)

普通にコピーできますけど。
もしかしてメモ帳などのテキストエディタにコピペしようとしていませんか?
ハングルの文字を取っておくなら、ワードやエクセルなどにコピペしてください。

私も勉強中なので細かいところはわかりませんが、大体、おおまかに以下のような事が書いてあると思います。

-----------------------

皆さんこんにちは ^^

2月25日は、ご存知の通り、私がオリンピックの夢をかなえてから1周年になる日でした。
パチパチパチ!!

韓国日では26日ですが・・・時間が経つのは本当に速いですね...続きを読む

QPL/SQL

こんにちは。皆様にお力をお貸しいただきたく、書き込みさせていただきます。

今月からPL/SQLを使っています。しかし私は全くの初心者です。「やさしいOraclePL/SQL入門」をさらっと読んだ程度です。
今ソースの解析をしていて、わからないことがあったらネットで調べるというような感じにしているのですが、なかなかネットでの検索がうまくできません。
そこで三つ質問があります。
1.リファレンス等のあるPL/SQLのお薦めサイトってありますか?(日本語onlyで)

2.PL/SQLのお薦めの参考書を教えてください。

3.ファンクションの中で
  NAME "Kishuizon_Check"
  LIBRARY LIBDDA_EXTERN
  LANGUAGE C
と書いてあったのですが、今まで見たことのない構文(?)で困ってます。なんとなく意味はわかるものの、きちんと「こういう意味です」というのが知りたいです。
ネットで検索したんですけど、うまくいきませんでした。

以上、初心者の質問ですが、本人は結構真剣に困っていますので皆様にご教示いただきたく思います。
皆様お忙しいとは思いますが、何卒宜しくお願い致します。

こんにちは。皆様にお力をお貸しいただきたく、書き込みさせていただきます。

今月からPL/SQLを使っています。しかし私は全くの初心者です。「やさしいOraclePL/SQL入門」をさらっと読んだ程度です。
今ソースの解析をしていて、わからないことがあったらネットで調べるというような感じにしているのですが、なかなかネットでの検索がうまくできません。
そこで三つ質問があります。
1.リファレンス等のあるPL/SQLのお薦めサイトってありますか?(日本語onlyで)

2.PL/SQLのお薦めの参考...続きを読む

Aベストアンサー

こんにちわ。

1, 2 については、No1 の方のおっしゃるように、OTN Japan が良いでしょう。
参考書についてですが、「OTN Book ストア」を見てみては如何でしょう?
送料無料で、5% off で購入できます。

3 の内容ですが、これは「外部プロシージャ」です。
PL/SQL のProcedure/Function をC で作成したライブラリに
マッピングしています。
このようにする事で、PL/SQL の中からサーバ上のDLL で提供される
関数を呼び出す事ができます。
→ この機能を使うには、Listener を設定してやる必要があります。
詳細は、アプリケーション開発者ガイドにあったかと思います。

参考URL:http://www.cbook24.com/partner/oracle/oraclePages.asp?page%5Ftype=3&associaterefererid=&promo%5Freferer%5Fid=&promo%5Fle

Q韓国語への翻訳をお願いします!!(結婚式挨拶文)

韓国語への翻訳をお願いできますか。

結婚式での挨拶文です。
この内容を席次表と一緒に入れようと思っています。

よろしくお願いします!!

----------

御挨拶

本日は年末のお忙しい中 
私たちのためにお集まり頂きまして
誠にありがとうございます

皆様の温かい祝福に包まれて 今日を迎えられたことに
心から感謝しております

そしてこの特別な日を 私たちにとって大切な皆様と
一緒に過ごせる幸せをいつまでも忘れることなく
これからの人生を歩んでゆきます

まだまだ未熟な二人ではございますが
今後とも末永くお力添えを頂けますよう
どうぞお願い申し上げます

Aベストアンサー

回答が遅くなりましたね。ごめんね、つう文句が脳味噌をかすめる。

御挨拶
인사장

本日は年末のお忙しい中 私たちのためにお集まり頂きまして 誠にありがとうございます
연말 바쁘신데도 불구하시고 오늘 저희들을 위해 참석해 주셔서 정말 감사합니다.

皆様の温かい祝福に包まれて 今日を迎えられたことに心から感謝しております
여러분들의 따뜻한 축복에 힘입어 오늘을 맞이하게 된 것을 다시 한번 진심으로 감사 말씀 올립니다.

そしてこの特別な日を 私たちにとって大切な皆様と一緒に過ごせる幸せをいつまでも忘れることなくこれからの人生を歩んでゆきます
그리고 저희들이 이 특별한 날을 소중하신 여러분들과 함께 할 수 있다는 행복함을 잊어버리는 일 없이 앞으로의 인생을 걸어나가겠습니다.

まだまだ未熟な二人ではございますが 今後とも末永くお力添えを頂けますようどうぞお願い申し上げます
아직 미숙한 저희 두사람이지만 앞으로도 끊임없는 지도편달를 부탁드리겠습니다.

QPL/SQLでCREATE SEQUENCEの呼び出し

いつも参考にさせていただいてます。

select文で取得した日付の年下2桁をもとに
順序を取得したいと思っています。

CREATE SEQUENCEは

seq_id_04
seq_id_05
seq_id_06
  :
  
というように年ごとに作成されてあります。

seq_id_yy.nextval
yyを取得した年に置き換えて実行したいのですが、
なかなかうまくいきません。

初めてのPL/SQLのため説明文におかしな部分があったらすみません。
ご存知の方がいましたら、ぜひぜひご教授ください。

Aベストアンサー

こんにちわ。

Execute immediate 文を使えばできる筈です。
先ずは、
 vSQL varchar2(256);
 vSeqNo NUMBER(8);
のように変数が定義されていたとして、
vSQL にSequence をSelect するSQL 文を作成します。
こんな感じです。
→ vSQL := 'SELECT seq_id_' || to_char(sysdate, 'YY') || '.nextval from dual';

そうしたら、
PL/SQL ブロックの中で、
execute immediate vSQL into vSeqNo;
として下さい。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報