• 締切済み

procedureが分からん

こんにちは、僕は今、趣味でjavaのプログラミングを馬鹿の一つ覚えでやっている者です。 なかなか書けるようになってきて(と言っても、ぷりんとるんとかボタンとかのレベルなんですが)、調子に乗って電卓を作ることにしましたのです。 んでボタン16個ぐらいおいて見たり、ActionListenerでボタン一個ずつにアレやったり(ボタン1を押したら1と出力とか)してたのですが、 まぁ、風の噂で(嘘)、procedureというものを知ってたのです。 話は遡り2ヶ月ぐらい前 AppInventorなるものをいじくってましてね、それにprocedureがあったんですよ。 それは、たとえば「purosiija」に「botan」とか「moji」とかいうアレを入れて、更に [botan]をクリックすれば、ラベルに[moji]というテキストを代入(?)する ってやったら、あとはボタン1~9に [prosiija] [botan]…button1 [moji]…1 みたいな感じで!めっちゃアレですよ、軽減出来るっていうか! とにかく、ボタン1~9に、いちいちボタン1を押したらラベルに1って表示されて~ボタン2を押したらラベルに2って表示されて~とかグダグダダラダラ末長く書くより、purosiija!botan!moji!って出来て、簡単だし軽くなるしもう良い事ばっかだったんですよ! コーディングの方でもあるんだろな~って思って検索してみたら、ストアドプロシージャっていうのしか出て来ないんですよ。あとなんかリモートうんたらとか。 読んでみたら、データベースから云々、アドレスが云々とか、なんか僕が思ってるのと全く違うんです。 僕はデータとかアドレスとかやりたいんじゃなくて、データベースなんて一切使わずにコーディングだけでやりたいんですよ。 という事で、長く拙い文章になってしまいましたが、プロシージャについて初心者でも分かるように教えてくださいお願いします。 質問の意味分かりますかね…

  • Java
  • 回答数2
  • ありがとう数1

みんなの回答

回答No.2

なにがやりたいのかさっぱりわかりませんでしたが、 少なくともあなたがやりたいことはprocedureという 言葉がキーワードになって表されるものではないと思います。 procedureという言葉は、特定の技術や特定の処理を 表すものではなく、単純に「処理手順」とか 「処理手続き」を意味する抽象的な言葉です。 (参考) http://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B7%E3%83%BC%E3%82%B8%E3%83%A3 プログラミング言語の分野では、C言語の関数のような一塊の処理を 「サブルーチン」と呼んだり「プロシージャ」と呼んだりします。 データベースの分野では、データベースを操作する手続きを データベース自身の中に格納したものを「ストアードプロシージャ」 と呼びます。 通信処理の分野では、あるコンピュータに格納されているプログラムを 別のコンピュータから呼び出して、その実行結果を得る技術を 「リモートプロシージャコール」と呼びます。 このように、procedureという言葉は、いろいろな場面で「手続き」を 意味するために使われる一般的な言葉です。

ma_KU_e_ZU_da
質問者

補足

回答、ありがとうございます! 僕は、コードの中に何回も出てくる同じ長文を1回の文にまとめて、それに名前を付けて何回も出てくる所にその名前を入れたら軽くなるし見やすくなるな~と思った次第でございます。 Googleで「プログラミング プロシージャ」とAND検索したら、Visual Basicのプロシージャが出てきて、それがまさに僕がやりたいことだったのでjava プロシージャで検索したらそれが出なかったので何でやー!ってなって質問したのです。 それがサブルーチンということでございましょうか。

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.1

ストアドプロシージャってなんぞや?ってことでいいなら、 先にプログラムしてコンピュータ内に格納(ストア)し、実行するタイプ。ってことです。 コンピュータを開発した人が決めたタイプでそのタイプしかありませんけどね。 人工知能といって、「自分で考えて」といえばストアードでないですが、 「考える」やり方は人間が組み込んだもの。コンピュータはひたすら計算しているにすぎません。

ma_KU_e_ZU_da
質問者

お礼

回答、ありがとうございます! そういうことなら、僕がやりたいのはストアドプロシージャではないらしいですわ!よくわかりました! あと、どうでもいいけど多分僕と誕生日一緒ですね おめでとうございます

関連するQ&A

  • ストアドプロシージャでcsvファイルへデータにエクスポート

    いつも勉強させていただいています。 ストアドプロシージャの勉強をし始めて間もない素人ですがよろしくお願いします。 SQL-server2005でテーブルをCSVファイルに、ストアドプロシージャを使ってそのままエクスポートする、と言うことをやっています。 以下作成したストアドプロシージャです。 ******************************************* CREATE PROCEDURE [ストプロ名] AS DECLARE @command VARCHAR(200) BEGIN SET @command = ' bcp [データベース名].[スキーマ].[テーブル] out C:\XXXX\aaa.txt -PXXXXXX -UXXXXXX -SXXXXXX' EXECUTE master.dbo.xp_cmdshell @command END **************************************** 解析ボタン、実行ボタンをクリックしてもエラーは出ません。 「ストアドプロシージャの実行」を選択して実行させても、 アラーは表示されず、ファイルも作成されません。 xp_cmdshell が有効になるように設定もしました。 残念ながら検討すらつかない状態です。ぜひご教授お願いします。

  • Accessからoracleのストアドプロシージャを呼び出したい。

    はじめまして。 いきなりですが質問させてください。 Accessからoracleのデータベース内に有るストアドプロシージャを使いたい(ボタンを押したらoracleのプロシージャが起動するイメージ)のですがAccessのVBAからはどのようにすれば使用できるのでしょうか? 色々調べて見たのですがVBからのはよく有るのですがVBAからは見つけられませんでした。 ODBCで繋げて呼び出しが出来たらなと思っています 無理ならば他の方法でも構いません。 よろしくお願いします。 使用環境 Access:2002 oracle:Oracle9i Enterprise Edition Release 9.2.0.1.0

  • SQLServer2005のストアドプロシージャのデバックの設定方法をご教示ください

    SQLServer2005でストアドプロシージャを作成しました。 VisualStudioを使用すればデバッグ(一行ずつ実行して、変数の中身や動作を確認)できるということですが、設定がうまくできません。 ストアドプロシージャ作成は初めてで、周りにも経験者がいないため解決策がわからない状態です。 ご存知の方、気がついたことがある方は、ぜひご教示ください。 ■■ マシン環境 ■■ OS:Windows2003Server DB:SQLServer2005 ■■ 試した方法 ■■ 1.DBサーバマシンのVisualStdio2005を使用 上記マシンに、SQLServer2005をインストールしたとき、  VisualStudio2005が自動的にインストールされたので これを使用することを考えました。 VisualStudio2005の「サーバーエクスプローラー」に、 今回作成したストアドプロシージャを表示するところまではできたのですが、 デバッグ実行できません。 メニューから「ストアドプロシージャのステップイン」を選択してデバッグウインドウを表示するらしいのですが メニューには、以下のものしか表示されません。  新しいプロシージャの追加 / 開く / 実行 ためしに実行すると、ストアドプロシージャは動作します (テーブルへのデータINSERTをストアドでコーディングしており、実行後に指定値が入っていたため) しかし、デバッグポイントを設定できず、ステップ実行もできません。 2.別マシンのVisualStdio2003を使用 私の開発マシンにはVisual Studio 2003が入っているため、 DBサーバマシンとリモートで接続して、上記と同様の設定を行いました (このVisual Studio2003はC#開発用にインストールしたものです)。 こちらは、メニューに「ストアドプロシージャのステップイン」が出ました。しかし……。 メニューから「ストアドプロシージャのステップイン」を選択してデバッグウインドウが表示されたときに、以下のメッセージボックスが出ます。 「SQL Server データベースが正しくセットアップされていないか、またはユーザーに master.sp_sdidebug を実行する権限がないため、ストアド プロシージャをデバッグできません。」 デバッグウインドウ上でデバッグポイントは設定できますが、 ストアドプロシージャを実行してもデバッグポイントでとまらず ステップ実行もできません。 (同様にINSERTしたテーブル値から、ストアド自体は動作していると判断) なお、1.2.共にSA認証でSQLServer2005にログオンしています。 SQLServer のデバッグできるのは、sysadminサーバロールを持つユーザだけらしいですが、 SA認証で使用しているユーザには「sysadmin」のサーバロールは設定しています。 ■■ 質問 ■■ 1) QLServer2005インストールで自動的にインストールされるVisualStudioでは、 ストアドプロシージャのデバッグはできないのでしょうか? それとも、SQLServer2005インストール時に、開発環境等の追加設定や、 別途VisualStudio2005をインストールする必要があるのでしょうか? それとも、別にSQLServer management Studioや構成ツール等で設定が必要なのでしょうか? または、メニューに「ストアドプロシージャのステップイン」を出す設定(方法)をご存知の方、ご教示をお願いします。 2) 「SQL Server データベースが正しくセットアップされていないか、またはユーザーに master.sp_sdidebug を実行する権限がないため、ストアド プロシージャをデバッグできません。」 このメッセージはどうすれば回避できるのでしょうか? SQL Server データベースが正しくセットアップされていないということですが、 これまで特に支障がないため問題はないと思っているのですが……。 検索で以下のサイトを見つけましたが、SQLServer2000のため参考になるかは疑問です。   http://support.microsoft.com/kb/839280/ja   http://support.microsoft.com/kb/886680/ja 以下のサイトは、どうすれば原因回避できるのかわかりませんでした(勉強不足を感じております)   http://msdn2.microsoft.com/ja-jp/library/ms164014.aspx master.sp_sdidebug を実行する権限の設定方法をご存知の方、ご教示いただけませんでしょうか? 3) Visual Studio以外で、SQLServer2005のストアドプロシージャをデバッグする方法がありましたらご教示ください。 変数の途中の値を一時テーブルにINSERTして確認するくらいしか方法はありませんでしょうか? 申し訳ございませんが、もしご存知の方、ご教示いただけませんでしょうか? なお、設定やマシン環境で記述不足等ありましたら、ご指摘いただければと思います。 以上です。よろしくお願いします

  • プロシージャを越えて戻る?

    プロシージャを越えて戻る? 研修課題として、「じゃんけん」のプログラム作成に取り組んでいるのですが、 "初期化(?)"が出来ずに悩んでいます。 プログラムの流れとして、 (1)コンピュータの手を決定する。(乱数発生を利用して) (2)プレーヤーの手を決定する。(ラジオボタンで選択) (3)勝敗の判断をする。 (4)続行するかどうかを尋ね(メッセージBoxにて)、「はい」ならば(1)に戻る。 …というものです。 これまで、(1)~(3)、(4)のメッセージボックス表示までは何とかクリアしました。 しかし(4)の「戻る」が上手くいきません。どうすれば正解なのかも良くわからない状況です。 私も独自に組んではみましたが、 ラベル等をすべて初期化し、初期状態と同じように「com手決定のボタン」以外のボタンを 全てEnabled=Falseにすることで、「見かけ上は」初期状態に戻す、というものです。 しかし、これでは正解ではないと感じました。 そこで思い浮かんだのが反復処理なのですが、 「プロシージャ内での処理は可能でも、プロシージャ間を越えた反復処理など不可能だし…」 などと自問自答して現在に至ります。 どうすれば、処理の流れとして(4)から(1)に戻ることができるのか、 どうか皆様のご教授をお願いしたいです。よろしくお願いいたします。 *なお、プログラムが200行くらいありますのでコードは割愛いたします。

  • ストアドプロシージャの実行について

    asp.net から sqlserver のストアドプロシージャを実行させる勉強をしています。 作成されているはずのストアドプロシージャを実行できずに困っています。 webformにテキストボックス、ボタン、データグリッドを貼り付け、ストアドプロシージャを作成し下記のプログラムを実行させるのですが上手くいきません。 (テキストボックスに任意で入力された数値のデータをボタンを押すと表示するものです) <エラー内容>→ ストアド プロシージャ 'proc1' が見つかりませんでした Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim cn As New SqlConnection Dim cmd As New SqlCommand cn.ConnectionString = "接続文字列" cmd.Connection = cn cmd.CommandText = "proc1" cmd.CommandType = System.Data.CommandType.StoredProcedure Dim p1 As SqlParameter = cmd.Parameters.Add("@param1", System.Data.SqlDbType.Int) p1.Value = TextBox1.Text cn.Open() Dim dr As SqlDataReader = cmd.ExecuteReader DataGrid2.DataSource = dr DataGrid2.DataBind() dr.Close() cn.Close() end sub ストアドproc1(場所:Northwind)の内容↓ CREATE procedure proc1 @param1 int as select * from products where categoryID=@param1 どなたか原因のわかる方がいれば、宜しくお願いします。

  • ストアドプロシージャが作成されない

    ●質問の主旨 phpMyAdminのMySQLで ストアドプロシージャの動作確認をしています。 試しに、 delimiter // create procedure pr30() begin select * from tb; select * from tb1l; select * from tb1; end // delimiter ; というプロシージャを作成して、 実行を押しても、画面が全く変化しません。 エラーの表示さえされません。 (もちろんデータベーステーブルのtb、tb1l、tb1が 存在することは確認済みです) また、作成している最中に、 命令文が勝手に消えることもあります。 普通に select * from tb; と、書いていても消えることはないのですが…。 この現象や対策についてご存知の方がいらっしゃいましたら、 アドバイスをお願いします。 ●環境 windows8 xammp1.8.1 phpMyAdmin3.5.2.2 MySQL5.5.27

    • ベストアンサー
    • MySQL
  • VB6 + OO4O プロシージャの実行&複数行を受け取る方法

    VB6 + OO4O プロシージャの実行&複数行を受け取る方法 現在、VB6でOracleデータベースを操作しようと試みている最中で、 OO4Oで接続しています。 (表現誤っているかもしれません。。。) Oracleは今回初めてで、今まではSQLserverだったのですが、 SQLserverで、  1.ストアドを実行(パラメータあり)  2.レコードセット(複数行)を受け取る  3.ループで全件処理   ・・・ というような処理をしていました。 たとえば、あるテーブルの、ある条件に一致したレコード(複数あり)を全件取得 など。 「引数を渡してストアドプロシージャを実行し、複数行を結果として受け取る」ということがしたく、 Oracleでどのように実現させるかを調べてみたのですが、 「SQL文を記述し、受け取る」  例)strSQL = "select * from tbl"    Set OraDynaset = OraDatabase.CreateDynaset(strSQL, 0) というようなサンプルしか見つけられませんでした。 where句で条件を記述すれば同じなのかもしれませんが、 そういったこまごました記述をストアドプロシージャに記載しておき、 呼び出す際はパラメータだけ指定する、ということを想定しています。 ストアドを実行するサンプルは複数見つけたのですが、戻り値が1つのみか、戻り値なしのもので、 複数行を結果として受け取るようなサンプルが見あたりませんでした。 ストアド(PL/SQL)も作成してみたのですが、 単純に  select * from TBL; とするとエラーで、  select * BULK COLLECT INTO vTBl from TBL;  for i in 1 .. vTBl.count loop   -- 全レコードの項目「name」を表示する。   dbms_output.put_line(vTBl(i).name);  end loop; というように1件1件処理させていく方法しか見つけれませんでした。 Oracleのストアドは、今までのSQLServerの考え方はいけないのでしょうか? 調べるとしたら、どのような単語で調べたらよろしいでしょうか? 「VB6」「oo4o」「複数行」「プロシージャ」など、いろいろ努力はしたつもりなのですが。。。 ご指導よろしくお願いいたします。

  • ASP.NETのGridViewでNULLの場合にチェックボックスにしたい

    ASP.net(VB)とSQLSERVERで開発しているのですが、SQLSERVERでストアドプロシージャでSELECT文を発行するSQLを書きました。 1)そのデータをGridViewで表示したのですが、列がNULLの場合にチェックボックスを表示したい。←これが分からない 2)チェックボックスがonの状態で実行ボタンが押下された場合に別のストアドプロシージャを走らせてNULLを「確認済」としたい。 (例) チェック   |名前 |メールアドレス 確認済    |Aさん|aaaa@test.co.jp □(チェックボックス) |Bさん|bbbb@test.co.jp [実行ボタン] このようにこのようなことはGridViewで可能なのでしょうか? それとも、HTMLコントロールを使用して一行ずつ書きこんでいくしかないのでしょうか? 返答をお待ちしております。

  • Select ~ into ~ で作成した一時テーブルにプライマリキー設定

    SQLServer2005 を使用し、ストアドプロシージャを作成しています。 select ~ into ~ で一時テーブルを作成、データ挿入するのですが、 この命令で作成された一時テーブルにプライマリキーを作成したいと 考えております。 目的は、挿入される件数が多くなりそうなので、 検索を速くする為です。 プライマリキーを作成するのは、 ALTER TABLE ~ CONSTRAINT PK_xxx PRIMARY KEY CLUSTERED ( ~ ) で作成できる事は、理解しております。 これらの処理をストアドプロシージャで行いたいのですが、 注意点としては、当ストアドプロシージャが 並行して実行される事を考慮しておかなくてはなりません。 以下のようなサンプルを作成し、テストしてみたのですが、 セション1でストアドプロシージャ実行後、 セション2でストアドプロシージャを実行してみたのですが、 以下のエラーメッセージが表示されてしまいます。 ここで質問ですが、 制約名をどのようにすれば実現できるのでしょうか。 たとえば、制約名を省略すれば、システム内で一意な名称を 命名してくれるような書き方はないのでしょうか。 ご存じの方、ご回答宜しくお願いします。 -- サンプルストアドプロシージャ create procedure proc_test as select getdate() AS sysdate into #worktable alter table #worktable with nocheck add constraint pk_xxx primary key clustered ([sysdate]) waitfor time '23:59' -- テストの為待機 -- セション1ストアドプロシージャ実行 exec proc_test -- セション2ストアドプロシージャ実行 exec proc_test -- セション2の実行結果 (1 行処理されました) メッセージ 2714、レベル 16、状態 4、プロシージャ proc_test、行 6 データベースに 'pk_xxx' という名前のオブジェクトが既に存在します。 メッセージ 1750、レベル 16、状態 0、プロシージャ proc_test、行 6 制約を作成できませんでした。以前のエラーを調べてください。

  • 入力項目をアドレス欄に反映したい。

    Javaとの連携(JSP)です。 入力項目を受け取り、アドレス欄にその入力項目を表示したいのですが… function Search(var moji){ alert(moji); DoAdr(Submit(), '/Search?CATEGORY=moji'); } DoAdrはsubmitボタンを押されたとき遷移するURLを決定する関数で、 例えば、DoAdr(Submit(),'/Search?CATEGORY=1') と入力されていた場合、 Submitを押すと、 http://~(中略)/Search?CATEGORY=1 に遷移します。 入力された文字列をmojiに格納するところまではできていますが、 [alert(moji);で正しく文字列が表示される] アドレス欄にhttp://~(中略)~/Search?CATEGORY=moji と そのまま表示されてしまいます。 変数の中身をアドレス欄に表示する方法を教えてください。お願いします。

専門家に質問してみよう