タグ付けされた質問 「stored-procedures」

リレーショナルデータベースシステムにアクセスするアプリケーションが使用できるサブルーチン。

6
C#のパラメーターを使用してストアドプロシージャを呼び出す
プログラムで削除、挿入、更新を行うことができ、データベースから作成されたストアドプロシージャを呼び出して挿入を試みます。 これは私がうまく機能するボタンインサートです。 private void btnAdd_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(dc.Con); SqlCommand cmd = new SqlCommand("Command String", con); da.InsertCommand = new SqlCommand("INSERT INTO tblContacts VALUES (@FirstName, @LastName)", con); da.InsertCommand.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text; da.InsertCommand.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLastName.Text; con.Open(); da.InsertCommand.ExecuteNonQuery(); con.Close(); dt.Clear(); da.Fill(dt); } これは、sp_Add_contact連絡先を追加するための名前のプロシージャを呼び出すボタンの開始です。の2つのパラメータsp_Add_contact(@FirstName,@LastName)。グーグルで良い例を検索しましたが、興味深いものは何も見つかりませんでした。 private void button1_Click(object sender, …

10
ストアドプロシージャとビューの違いは何ですか?
私はいくつかの点で混乱しています: ストアドプロシージャとビューの違いは何ですか? SQL Serverでは、ストアドプロシージャとビューをいつ使用する必要がありますか? ビューを使用すると、パラメーターを渡すことができる動的クエリを作成できますか? どちらが最も速く、どの基準でどちらが他よりも速いですか? ビューまたはストアドプロシージャはメモリを永続的に割り当てますか? プロシージャがマテリアルテーブルを作成する一方で、ビューが仮想テーブルを作成すると誰かが言ったとはどういう意味ですか? 他にもポイントがありましたら教えてください。

2
ステートメントが完了する前に、最大再帰100を使い果たしました
私max recursion errorはこのクエリでを取得し続けます。 最初はnullが返されていて、それが原因でnull値と一致してエラーが発生するためだと思っていましたが、クエリを書き直してnullが返されず、エラーが発生するようにしました。 エラーが発生しないように、この関数を書き換えるための最良の方法は何でしょうか WITH EmployeeTree AS ( SELECT EMP_SRC_ID_NR Id, USR_ACV_DIR_ID_TE Uuid, CASE Employees.APV_MGR_EMP_ID WHEN Null THEN '0' ELSE Employees.APV_MGR_EMP_ID END as ApprovalManagerId FROM dbo.[tEmployees] as Employees WITH (NOLOCK) WHERE APV_MGR_EMP_ID = @Id and Employees.APV_MGR_EMP_ID is not null and Employees.EMP_SRC_ID_NR is not null UNION ALL SELECT EMP_SRC_ID_NR Id, …

6
Mysql-ストアドプロシージャを終了/終了する方法
非常に単純な質問がありますが、Mysqlを使用してSPを終了するための単純なコードがありませんでした。誰でも私とそれを行う方法を共有できますか? CREATE PROCEDURE SP_Reporting(IN tablename VARCHAR(20)) BEGIN IF tablename IS NULL THEN #Exit this stored procedure here END IF; #proceed the code END;


5
PL / pgSQLでクエリ結果を変数に保存する
PostgreSQLの手続き型言語であるPL / pgSQLの変数にクエリの結果を割り当てる方法は? 私には機能があります: CREATE OR REPLACE FUNCTION test(x numeric) RETURNS character varying AS $BODY$ DECLARE name character varying(255); begin name ='SELECT name FROM test_table where id='||x; if(name='test')then --do somthing else --do the else part end if; end; return -- return my process result here $BODY$ LANGUAGE plpgsql VOLATILE 上記の関数では、このクエリの結果を保存する必要があります。 …


15
SQLストアドプロシージャ内の動的な並べ替え
これは、過去に何時間も調査してきた問題です。現代のRDBMSソリューションで対処すべきだったように思えますが、データベースバックエンドを備えたWebまたはWindowsアプリケーションで信じられないほど一般的なニーズであると私が見ているものに実際に対処するものはまだ見つかりません。 動的ソートについてお話します。私のファンタジーの世界では、それは次のような単純なものでなければなりません: ORDER BY @sortCol1, @sortCol2 これは、初心者のSQLおよびストアドプロシージャの開発者がインターネット上のフォーラム全体で行った標準的な例です。「なぜこれが可能ではないのですか?」彼らが聞く。必ず、誰かが最終的にストアドプロシージャのコンパイルされた性質、一般的な実行計画、およびパラメーターを直接ORDER BY句に入れることができない他のあらゆる種類の理由について彼らに説明しに来ます。 「クライアントに並べ替えをしてもらいましょう」と既に思っている人もいます。当然、これはデータベースから作業をオフロードします。私たちの場合でも、データベースサーバーは99%の確率で汗をかいていませんし、マルチコアでも、6か月ごとに発生するシステムアーキテクチャの他の無数の改善でもありません。この理由だけで、データベースにソートを処理させることは問題になりません。さらに、データベースは非常に選別が得意です。それらはそれに最適化されており、正しく理解するために何年もかかっています。それを行うための言語は信じられないほど柔軟で直感的でシンプルであり、何よりも初心者のSQLライターはそれを行う方法を知っており、さらに重要なことに、編集方法を知っています。変更を加えたり、メンテナンスを行ったりします。データベースに負担がかけられず、開発時間を単純化(および短縮)したい場合、これは当然の選択のようです。 次に、ウェブの問題があります。私はクライアント側でHTMLテーブルの並べ替えを行うJavaScriptをいじってみましたが、それらは必然的に私のニーズに対して十分な柔軟性を備えていません。また、データベースに過度の負担がかからず、並べ替えを非常に簡単に実行できるため、私自身のJavaScriptソーターを書き換えたり、ロールバックしたりするのにかかる時間を正当化するのに苦労しています。同じことはサーバーサイドのソートにも当てはまりますが、おそらくJavaScriptよりもはるかに優先されています。私は特にDataSetsのオーバーヘッドが好きではないので、私を訴えます。 しかし、これはそれが不可能である、またはむしろ、容易ではないという点を取り戻します。以前のシステムでは、動的な並べ替えを行うための信じられないほどハックな方法を実行しました。それはきれいでもなく、直感的でも、単純でも、柔軟でもなかったため、初心者のSQLライターは数秒で失われてしまいます。すでに、これはそれほど「解決策」ではなく「複雑化」になりそうです。 次の例は、あらゆる種類のベストプラクティスや優れたコーディングスタイルなどを公開することを意図したものではなく、T-SQLプログラマとしての私の能力を示すものでもありません。彼らは彼らが何であるかであり、私は彼らが混乱し、悪い形で、そしてただのハックであることを完全に認めます。 整数値をパラメーターとしてストアード・プロシージャーに渡し(パラメーターを単に「ソート」と呼びましょう)、そこから他の変数の束を判別します。たとえば... sortが1(またはデフォルト)だとしましょう: DECLARE @sortCol1 AS varchar(20) DECLARE @sortCol2 AS varchar(20) DECLARE @dir1 AS varchar(20) DECLARE @dir2 AS varchar(20) DECLARE @col1 AS varchar(20) DECLARE @col2 AS varchar(20) SET @col1 = 'storagedatetime'; SET @col2 = 'vehicleid'; IF @sort = 1 …

3
SQL Serverストアドプロシージャのオプションパラメータ?
SQL Server 2008でいくつかのストアドプロシージャを作成していますが、ここでオプションの入力パラメーターの概念が可能かどうか疑問に思いますか? 使用したくないパラメーターには常にNULLを渡し、ストアドプロシージャの値を確認し、そこから取得できると思いますが、ここでコンセプトが利用できるかどうかに興味がありました。ありがとう!

16
MySQLストアドプロシージャをどのようにデバッグしますか?
ストアドプロシージャをデバッグするための現在のプロセスは非常に単純です。"debug"と呼ばれるテーブルを作成し、実行時にストアドプロシージャから変数値を挿入します。これにより、スクリプトの特定のポイントで変数の値を確認できますが、MySQLストアドプロシージャをデバッグするより良い方法はありますか?

17
ストアドプロシージャの命名規則は何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 ストアドプロシージャの命名に関するさまざまなルールを見てきました。 sproc名の前にusp_を付ける人もいれば、アプリ名の省略形を付ける人もいれば、所有者名を付ける人もいます。本当に意味がない限り、SQL Serverでsp_を使用しないでください。 プロシージャ名を動詞で始める人もいます(Get、Add、Save、Remove)。その他はエンティティ名を強調します。 何百ものsprocが存在するデータベースでは、すでに存在すると思われる場合、スクロールして適切なsprocを見つけるのは非常に困難です。命名規則により、sprocを見つけやすくなります。 命名規則を使用していますか?それを説明し、他の選択肢よりも好む理由を説明してください。 返信の概要: 誰もがネーミングの一貫性を主張しているようですが、誰にとっても同じネーミング規則を使用する方が、特定のネーミング規則を使用するよりも重要かもしれません。 接頭辞:多くの人がusp_または類似のもの(ただしまれにsp_)を使用していますが、他の多くはデータベースまたはアプリ名を使用しています。賢いDBAの1人は、gen、rpt、およびtskを使用して、一般的なCRUD sprocを、レポートまたはタスクに使用されるものと区別します。 動詞+名詞は名詞+動詞よりわずかに人気があるようです。動詞にSQLキーワード(選択、挿入、更新、削除)を使用する人もいれば、GetやAddなどのSQL以外の動詞(またはそれらの省略形)を使用する人もいます。単一名詞と複数名詞を区別して、1つまたは複数のレコードが取得されているかどうかを示すものもあります。 必要に応じて、最後に追加のフレーズが提案されます。GetCustomerById、GetCustomerBySaleDate。 名前のセグメント間にアンダースコアを使用する人もいれば、アンダースコアを使用しない人もいます。app_ Get_CustomerとappGetCustomerの比較-読みやすさの問題だと思います。 sprocの大規模なコレクションは、OracleパッケージまたはManagement Studio(SQL Server)ソリューションとプロジェクト、またはSQL Serverスキーマに分離できます。 不可解な略語は避けてください。 私が選んだ答えを選ぶ理由:良い回答がたくさんあります。皆さん、ありがとうございました!ご覧のとおり、1つだけを選択するのは非常に困難です。私が選んだものは私に共鳴しました。私は彼が説明するのと同じ道をたどりました-動詞+名詞を使用しようとすると、顧客に適用されるすべてのsprocを見つけることができません。 既存のsprocを見つけたり、存在するかどうかを判断したりできることは非常に重要です。誰かがうっかり別の名前で重複したsprocを作成すると、深刻な問題が発生する可能性があります。 私は通常、何百ものsprocを持つ非常に大規模なアプリを扱っているので、最も見つけやすい命名方法を好みます。小さいアプリの場合は、メソッド名の一般的なコーディング規則に従っているため、動詞+名詞を推奨します。 彼は、あまり役に立たないusp_ではなく、アプリ名をプレフィックスとして付けることも推奨しています。複数の人が指摘したように、データベースには複数のアプリのsprocが含まれている場合があります。したがって、アプリ名を前に付けると、sprocを分離するのに役立ち、DBAや他の人がsprocがどのアプリに使用されているかを判別するのに役立ちます。

15
SQL Serverデータベースで文字列を検索するにはどうすればよいですか?
それが可能かどうかはわかりますが、方法はわかりません。 特定の文字列に関するすべての言及について、SQL Serverデータベースを検索する必要があります。 例:すべてのテーブル、ビュー、関数、ストアドプロシージャなどを検索して、文字列 "tblEmployes"(テーブル内のデータではない)を探します。 これが必要な理由の1つは、作成された余分なデータテーブルをいくつか削除したいのですが、プロシージャまたは関数のどこかで使用されているのではないかと心配です。

5
Entity Framework Code Firstはストアドプロシージャをサポートしていますか?
私はEFコードファーストのプレゼンテーションをいくつか見てきましたが、EFCFがストアドプロシージャでどのように機能するかは知りませんでした。 spを使用するメソッドを宣言するにはどうすればよいですか?エンティティのプロパティを手動でspパラメータにマッピングせずに、spを呼び出すメソッドにエンティティを渡すことはできますか? また、モデルを変更するとどうなりますか?モデルからテーブルを再作成しているときにspをドロップしますか?そしてトリガーはどうですか? これらがサポートされていない場合、将来的にサポートする予定はありますか?


8
C#SQL Server-ストアドプロシージャにリストを渡す
C#コードからSQL Serverストアドプロシージャを呼び出しています。 using (SqlConnection conn = new SqlConnection(connstring)) { conn.Open(); using (SqlCommand cmd = new SqlCommand("InsertQuerySPROC", conn)) { cmd.CommandType = CommandType.StoredProcedure; var STableParameter = cmd.Parameters.AddWithValue("@QueryTable", QueryTable); var NDistanceParameter = cmd.Parameters.AddWithValue("@NDistanceThreshold", NDistanceThreshold); var RDistanceParameter = cmd.Parameters.AddWithValue(@"RDistanceThreshold", RDistanceThreshold); STableParameter .SqlDbType = SqlDbType.Structured; NDistanceParameter.SqlDbType = SqlDbType.Int; RDistanceParameter.SqlDbType = SqlDbType.Int; // Execute the query …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.