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

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

29
ストアドプロシージャの結果を一時テーブルに挿入する
どうすればよいSELECT * INTO [temp table] FROM [stored procedure]ですか?ないFROM [Table]と定義しませんか[temp table]? SelectからBusinessLineへのすべてのデータはtmpBusLine問題なく機能します。 select * into tmpBusLine from BusinessLine 私は同じことを試みてstored procedureいますが、データを返すa を使用することはまったく同じではありません。 select * into tmpBusLine from exec getBusinessLineHistory '16 Mar 2009' 出力メッセージ: メッセージ156、レベル15、状態1、行2キーワード「exec」付近の構文が正しくありません。 出力ストアドプロシージャと同じ構造の一時テーブルを作成するいくつかの例を読みましたが、これは問題なく機能しますが、列を指定しない方がいいでしょう。


22
SQL Serverのストアドプロシージャのテキストを検索する
すべてのデータベースストアドプロシージャからテキストを検索したい。以下のSQLを使用します。 SELECT DISTINCT o.name AS Object_Name, o.type_desc FROM sys.sql_modules m INNER JOIN sys.objects o ON m.object_id = o.object_id WHERE m.definition Like '%[ABD]%'; [ABD]角かっこを含むすべてのストアドプロシージャで検索したいのですが、適切な結果が得られません。これを達成するためにクエリをどのように変更できますか?


18
ストアドプロシージャの結果セットから列を選択する
80列と300行を返すストアドプロシージャがあります。これらの列のうち2つを取得する選択を記述したいと思います。何かのようなもの SELECT col1, col2 FROM EXEC MyStoredProc 'param1', 'param2' 上記の構文を使用すると、エラーが発生します。 「無効な列名」。 ストアドプロシージャを変更することが最も簡単な解決策であることはわかっていますが、私はそれを記述しておらず、変更することはできません。 やりたいことはありますか? 結果を入れる一時テーブルを作成することもできますが、80列なので、2列を取得するためだけに80列の一時テーブルを作成する必要があります。返されたすべての列を追跡しないようにしたいと思いました。 WITH SprocResults AS ....マークの提案に従って使用してみましたが、2つのエラーが発生しました キーワード「EXEC」付近の構文が正しくありません。「)」付近の構文が正しくありません。 テーブル変数を宣言しようとすると、次のエラーが発生しました 挿入エラー:列名または指定された値の数がテーブル定義と一致しません 私がしよう SELECT * FROM EXEC MyStoredProc 'param1', 'param2' とすると、エラーが発生します: キーワード「exec」付近の構文が正しくありません。

5
既存のテーブルへのSQL Server SELECT
1つのテーブルからいくつかのフィールドを選択し、それらをストアドプロシージャから既存のテーブルに挿入しようとしています。これが私が試していることです: SELECT col1, col2 INTO dbo.TableTwo FROM dbo.TableOne WHERE col3 LIKE @search_key SELECT ... INTO ...一時テーブル用だと思うので、dbo.TableTwoすでに存在するエラーが発生します。 からdbo.TableOneに複数の行を挿入するにはどうすればよいdbo.TableTwoですか?

14
SQL Server-SELECT FROMストアドプロシージャ
行を返すストアドプロシージャがあります。 CREATE PROCEDURE MyProc AS BEGIN SELECT * FROM MyTable END 実際の手順はもう少し複雑なので、sprocが必要です。 このプロシージャを呼び出すことによって出力を選択することは可能ですか? 何かのようなもの: SELECT * FROM (EXEC MyProc) AS TEMP 私が使用する必要があるSELECT TOP X、ROW_NUMBERと、追加のWHEREページへの句自分のデータ、と私は本当にパラメータとして、これらの値を渡す必要はありません。




18
ストアドプロシージャを作成する前に存在するかどうかを確認する方法
クライアントが「データベース管理」機能を実行するたびに実行する必要があるSQLスクリプトがあります。スクリプトには、クライアントデータベースでのストアドプロシージャの作成が含まれます。これらのクライアントの一部は、スクリプトの実行時にストアドプロシージャを既に持っている場合もあれば、持っていない場合もあります。不足しているストアドプロシージャをクライアントデータベースに追加する必要がありますが、T-SQL構文をどれだけ曲げようとしてもかまいません。 CREATE / ALTER PROCEDURE 'はクエリバッチの最初のステートメントである必要があります 私は作品を作る前にその落ち込みを読みましたが、私はそのようにするのが好きではありません。 IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'MyProc') DROP PROCEDURE MyProc GO CREATE PROCEDURE MyProc ... ストアドプロシージャの存在チェックを追加し、存在しない場合は作成し、存在する場合は変更するにはどうすればよいですか?

30
ストアドプロシージャとコードでSQLを維持する場合の長所と短所は何ですか[完了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 6年前休業。 ロックされています。この質問とトピックへの回答はロックされています。質問はトピックから外れていますが、歴史的に重要です。現在、新しい回答や相互作用を受け入れていません。 SQLをC#ソースコードまたはストアドプロシージャに保持することの利点/欠点は何ですか?私は私たちが取り組んでいるオープンソースプロジェクト(C#ASP.NETフォーラム)で友人とこれについて話し合っています。現時点では、ほとんどのデータベースアクセスは、SQLをC#でインラインで構築し、SQL Server DBを呼び出すことによって行われます。したがって、私は、この特定のプロジェクトに最適なものを確立しようとしています。 これまでのところ: コードの利点: 保守が容易-クエリを更新するためにSQLスクリプトを実行する必要はありません 別のDBへの移植が容易-移植するprocがない ストアドプロシージャの利点: パフォーマンス 安全保障

21
Entity Framework 6(Code-First)でストアドプロシージャを呼び出す方法
Entity Framework 6は初めてなので、プロジェクトにストアドプロシージャを実装したいと考えています。次のようなストアドプロシージャがあります。 ALTER PROCEDURE [dbo].[insert_department] @Name [varchar](100) AS BEGIN INSERT [dbo].[Departments]([Name]) VALUES (@Name) DECLARE @DeptId int SELECT @DeptId = [DeptId] FROM [dbo].[Departments] WHERE @@ROWCOUNT > 0 AND [DeptId] = SCOPE_IDENTITY() SELECT t0.[DeptId] FROM [dbo].[Departments] AS t0 WHERE @@ROWCOUNT > 0 AND t0.[DeptId] = @DeptId END Department クラス: public class …

12
SQL Server:クエリは高速ですが、手順が遅い
クエリは高速に実行されます。 DECLARE @SessionGUID uniqueidentifier SET @SessionGUID = 'BCBA333C-B6A1-4155-9833-C495F22EA908' SELECT * FROM Report_Opener WHERE SessionGUID = @SessionGUID ORDER BY CurrencyTypeOrder, Rank サブツリーコスト:0.502 しかし、同じSQLをストアドプロシージャに配置すると、実行速度が遅くなり、実行プランがまったく異なります。 CREATE PROCEDURE dbo.ViewOpener @SessionGUID uniqueidentifier AS SELECT * FROM Report_Opener WHERE SessionGUID = @SessionGUID ORDER BY CurrencyTypeOrder, Rank EXECUTE ViewOpener @SessionGUID サブツリーのコスト:19.2 私は走った sp_recompile ViewOpener そして、それはまだ同じように(悪い)実行されます、そして私はストアドプロシージャもに変更しました CREATE PROCEDURE …

12
C#プログラム内でストアドプロシージャを実行する方法
このストアドプロシージャをC#プログラムから実行したい。 SqlServerクエリウィンドウに次のストアドプロシージャを記述し、stored1として保存しました。 use master go create procedure dbo.test as DECLARE @command as varchar(1000), @i int SET @i = 0 WHILE @i < 5 BEGIN Print 'I VALUE ' +CONVERT(varchar(20),@i) EXEC(@command) SET @i = @i + 1 END 編集: using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; namespace AutomationApp …

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