存储过程是否适合我的任务

时间:2016-03-08 12:19:36

标签: sql-server stored-procedures

我是SQL Server的新手,有点迷失。当我尝试以下操作时,它会执行前三行并忽略其余部分,只需获取

  

'命令已成功完成。'

USE [RenewalsDb]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[One] 

AS
BEGIN

SET NOCOUNT ON;

DROP TABLE [dbo].NewTransTable;

SELECT * INTO [dbo].[NewTransTable] FROM [dbo].aqryTransTable;

DELETE FROM  [dbo].[NewTransTable] WHERE  (((NewTransTable.CURRENT_LICENSE_SKU_DESC) Like '% partner program %'));

DELETE FROM  [dbo].[NewTransTable] WHERE (((NewTransTable.RENEWAL_MAINTAINANCE_SKU_DESC) Like '% partner program %'));

UPDATE NewTransTable SET NewTransTable.[Quote Number] = Null;

UPDATE dbo.TransactionTable SET Concat = dbo.qryNamedAcReseller.LATEST_DISTRIBUTOR_NAME + dbo.qryNamedAcReseller.[Sub Territory FY14   ]
FROM  dbo.TransactionTable INNER JOIN
    dbo.qryNamedAcReseller ON dbo.TransactionTable.LATEST_INSTANCE_NUMBER = dbo.qryNamedAcReseller.LATEST_INSTANCE_NUMBER;

UPDATE dbo.TransactionTable SET Concat = dbo.qryNamedAcReseller.[Sub Territory FY14   ]
FROM  dbo.TransactionTable INNER JOIN
    dbo.qryNamedAcReseller ON dbo.TransactionTable.LATEST_INSTANCE_NUMBER = dbo.qryNamedAcReseller.LATEST_INSTANCE_NUMBER
WHERE Concat IS NULL;

UPDATE dbo.NewTransTable SET [Quote Number] =  dbo.Autogen.[Quote Number] FROM dbo.Autogen RIGHT OUTER JOIN
    dbo.NewTransTable ON dbo.Autogen.[IB Reference Num] = dbo.NewTransTable.LATEST_INSTANCE_NUMBER AND 
    dbo.Autogen.[Quote Known As] = dbo.NewTransTable.[Quote Known As]
DROP TABLE [dbo].NewTransTable2; 

SELECT * INTO [dbo].[NewTransTable2] FROM [dbo].aqryTransTable2;

ALTER TABLE [dbo].NewTransTable2 ADD Named_Account nvarchar(255);

END

GO

1 个答案:

答案 0 :(得分:-1)

欢迎使用stackoverflow。

存储过程就像一个可以多次重复使用的模板,可以使用帮助或参数使其动态化。请参阅存储过程指南中的mssqltips.com - SQL Server Stored Procedure Tutorial。如果只想执行一些命令,则存储过程不正确。

因此,当您执行上述脚本时,SQL Server正在做的是创建模板结构,即名为[One]的存储过程,而不是实际在存储过程中运行脚本。

要执行名为[One]的存储过程,您必须使用EXEC One或仅One和执行(F5)

来调用它