Questions tagged «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列,所以我需要制作一个80列的临时表才能得到2列。我想避免跟踪所有返回的列。 我尝试WITH SprocResults AS ....按照Mark的建议使用,但出现2个错误 关键字“ EXEC”附近的语法不正确。')'附近的语法不正确。 我尝试声明一个表变量,但出现以下错误 插入错误:列名或提供的值数与表定义不匹配 如果我尝试 SELECT * FROM EXEC MyStoredProc 'param1', 'param2' 我得到错误: 关键字“ exec”附近的语法不正确。

5
SQL Server SELECT到现有表中
我试图从一个表中选择一些字段,并将它们插入到存储过程中的现有表中。这是我正在尝试的: 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 我的实际过程有些复杂,这就是为什么需要存储的原因。 是否可以通过调用此过程来选择输出? 就像是: 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保留在存储的Procs与代码中有什么优缺点?
已关闭。这个问题是基于观点的。它当前不接受答案。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 将SQL保留在C#源代码或存储的Procs中有哪些优点/缺点?我一直在和一个朋友在我们正在研究的一个开源项目(C#ASP.NET论坛)上讨论这个问题。目前,大多数数据库访问是通过在C#中构建SQL内联并调用SQL Server DB来完成的。因此,我正在尝试确定,对于该特定项目,哪一个最好。 到目前为止,我有: 代码的优点: 易于维护-无需运行SQL脚本即可更新查询 移植到另一个数据库更容易-没有proc移植到端口 存储过程的优点: 性能 安全

21
如何在Entity Framework 6(代码优先)中调用存储过程?
我是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 …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.