t-sql编辑程序

时间:2018-03-12 22:29:14

标签: sql-server tsql

我正在学习sql和asp.net并试图建立一个简单的网上商店,我有一个很好的工作程序,但我正在尝试编辑它,对tblProducts应用'select'来过滤产品类型:

SELECT * FROM tblProducts where PCategoryID=1

但我无法理解如何更改我的程序,我的所有尝试都会导致语法错误

CREATE PROCEDURE [dbo].[ProcBindAllProducts]
AS
 SELECT A.*, B.*,C.Name, A.PPrice-A.PSellPrice as DiskAmount, B.Name as ImageName,C.Name  as BrandName 
  from tblProducts A
 inner join tblBrands C on C.BrandID=A.PBrandID 
 cross apply(
 SELECT TOP 1 * from tblProductImages B where  B.PID=A.PID order by B.PID desc 
 ) B 


 RETURN 0

只有一种方式可以在没有sintax错误的情况下执行此操作,但此过程的结果是2个表,一个按类型过滤,另一个带内连接

CREATE PROCEDURE [dbo].[ProcBindFilteredProducts]
AS

 SELECT * from tblProducts where tblProducts.PCategoryID=1
 SELECT A.*,B.*,C.Name, A.PPrice-A.PSellPrice as DiskAmount, B.Name as ImageName,C.Name  as BrandName 
  from tblProducts A  
 inner join tblBrands C on C.BrandID=A.PBrandID 
 cross apply(
 SELECT TOP 1 * from tblProductImages B where  B.PID=A.PID order by B.PID desc 
 ) B 


 RETURN 0

2 个答案:

答案 0 :(得分:0)

如果您可以提供有关您遇到的语法错误的更多信息,这可能会很有用。

如果您已经创建了[dbo]。[ProcBindFilteredProducts]程序,那么您需要:

  • 更改程序(只需用ALTER
  • 替换CREATE字样
  • 在再次调用create之前删除该过程“DROP PROCEDURE [dbo]。[ProcBindFilteredProducts] GO”

通常它更容易改变。

答案 1 :(得分:-1)

如果您正在编辑现有程序,则必须使用ALTER PROCEDURE语句。如果您正在使用SSMS,则可以右键单击您的程序,然后单击Modify为您生成可以编辑的脚本。

ALTER PROCEDURE [dbo].[ProcBindAllProducts]
AS

-- Code for procedure

GO

您收到的错误是什么?