T-SQL - 存储过程 [英] T-SQL - stored procedure

查看:78
本文介绍了T-SQL - 存储过程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何编写这个存储过程来检查stockqty并打印消息,如果它降到零?目前我收到错误。谢谢。



错误:

消息102,等级15,状态1,程序ValidateQty,第8行

'';''附近的语法不正确。

消息137,级别15,状态2,行3

必须声明标量变量@vStockqty。

消息137,等级15,状态2,行5

必须声明标量变量@Partid。

消息137,等级15,状态2,第8行

必须声明标量变量@vStockqty。

消息137,级别15,状态2,行9

必须声明标量变量@Partid。

----------------------------------- ---------------------------------------------



How can I write this stored procedure that would check stockqty and print message if it goes down to zero? Currently I am getting error. Thanks.

Error:
Msg 102, Level 15, State 1, Procedure ValidateQty, Line 8
Incorrect syntax near '';''.
Msg 137, Level 15, State 2, Line 3
Must declare the scalar variable "@vStockqty".
Msg 137, Level 15, State 2, Line 5
Must declare the scalar variable "@Partid".
Msg 137, Level 15, State 2, Line 8
Must declare the scalar variable "@vStockqty".
Msg 137, Level 15, State 2, Line 9
Must declare the scalar variable "@Partid".
--------------------------------------------------------------------------------

IF EXISTS (SELECT name FROM SYSOBJECTS WHERE name = 'ValidateQty')
    BEGIN DROP PROCEDURE ValidateQty; END;
GO

CREATE PROCEDURE ValidateQty 
@vStockqty CHAR(10),
@Partid CHAR(10)
AS 
BEGIN 
-- No query required; test for positive value
END;
GO

-- testing block for ValidateQty  -- warn if the stockqty goes below 1
IF (@vStockqty < 1 (SELECT Stockqty
                  FROM Inventory
                  WHERE PartID = @Partid) )
BEGIN    

EXECUTE ValidateQty 0, @vStockqty;
 PRINT 'Stock quantity is below zero  for  ' + @Partid   ;
END;
GO

推荐答案





尝试一些TSQL Basic Books来创建程序....



我想,很抱歉这样说,你不是有任何基本的T-SQL编程技巧...



首先阅读以下内容



数据类型(数量和所有不是VARCHAR数据类型,这些是数字权利。

条件语句(IF,WHILE ...)

如何以及在何处使用BEGIN ...结束,发表声明......

简单的存储程序



查看链接..



SQL教程 [ ^ ]



Hi,

Try some TSQL Basic Books for Creating Procedure....

I think, Sorry to say this, you are not having any basic T-SQL Programming Skills...

First Read about followings

Data Types (Quantity and all not a VARCHAR Data type, These are Numbers right).
Conditional Statements (IF, WHILE ...)
How and Where to use BEGIN...END , Go Statements...
Simple Stored Procedures

Check the links..

SQL Tutorials[^]

IF OBJECT_ID('ValidateQty') IS NOT NULL DROP PROCEDURE dbo.ValidateQty
GO
CREATE PROCEDURE ValidateQty 
@vStockqty INT,
@Partid INT
AS 
BEGIN 
	-- No query required; test for positive value
	-- testing block for ValidateQty  -- warn if the stockqty goes below 1
	SELECT @vStockqty = Stockqty 
	FROM Inventory
	WHERE PartID = @Partid
	
	IF @vStockqty < 1
	BEGIN    
		PRINT 'Stock quantity is below zero  for  ' + @Partid   ;
	END;
END;

EXECUTE ValidateQty 10, 121;





Regars,

GVPrabu



Regars,
GVPrabu


检查一下:

Check this:
CREATE PROCEDURE ValidateQty 
@vStockqty INT NOT NULL,
@Partid INT NOT NULL
AS 
BEGIN  
    IF (@vStockqty > 0)
    BEGIN
            SELECT Stockqty
            FROM Inventory
            WHERE PartID = @Partid)
        END
    ELSE
        BEGIN
            PRINT 'Stock quantity is below zero  for  ' + @Partid 
        END
END





您是否看到了差异?



Do you see the differences?


试试这个:

try this one:
IF EXISTS (
       SELECT NAME
       FROM   sys.procedures
       WHERE  NAME = ''ValidateQty''
   )
BEGIN
    DROP PROCEDURE ValidateQty;
END;
    GO
    
CREATE PROCEDURE ValidateQty
	@vStockqty CHAR(10),
	@Partid CHAR(10)
AS
	DECLARE @CurrentValue INT = (
	            SELECT Stockqty
	            FROM   Inventory
	            WHERE  PartID = @Partid
	        )
	
	-- testing block for ValidateQty  -- warn if the stockqty goes below 1
	IF (@CurrentValue -@vStockqty) < 1
	BEGIN
	    EXECUTE ValidateQty 0, @vStockqty;
	    PRINT ''Stock quantity is below zero  for  '' + @Partid ;
	END;
GO


这篇关于T-SQL - 存储过程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆