首页 > 代码库 > SQL例题:储存过程

SQL例题:储存过程

第一题:马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人?

 1 CREATE PROCEDURE [dbo].[T1] 2 AS 3 BEGIN 4 /* 5 马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭 6 共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人? 7 解方程组 8 编写程序,采用穷举法求出结果。 9 */10     DECLARE @M INT = 0,@W INT = 0,@C INT = 011     CREATE TABLE #(M INT,W INT,C INT)12     WHILE @M<=3013         BEGIN14             WHILE @W<=3015                 BEGIN16                     SET @C = 30 - @M - @W17                     IF 3 * @M + 2 * @W + @C = 5018                         BEGIN19                             INSERT INTO # VALUES (@M,@W,@C)20                         END21                     SET @W = @W + 122                 END23             SET @M = @M + 124         END25     SELECT * FROM #26     DROP TABLE #27 END28 GO

第二题:编写程序,根据以下公式求e的值。要求用两种方法计算: 
 1) for循环,计算前50项  
 2)while 循环,直至最后一项的值小于10-4

技术分享
 1 CREATE FUNCTION [dbo].[求阶乘] 2 ( @i AS BIGINT  3 ) 4 RETURNS BIGINT 5 AS 6 BEGIN 7     DECLARE @x BIGINT = 1,@y BIGINT = 1 8     WHILE @x <= @i 9         BEGIN10             SET @y = @y * @x11             SET @x = @x + 112         END13   RETURN @y14 END15 GO
View Code
 1 CREATE PROCEDURE [dbo].[T002] 2   @FF AS bit = 0 3 AS 4 BEGIN 5 /* 6  编写程序,根据以下公式求e的值。要求用两种方法计算:  7  1) for循环,计算前50项   8  2)while 循环,直至最后一项的值小于10-4 9 PS:SQL SERVER中没有FOR循环,50!会超出BIGINT的范围,算个20意思一下10 */11     DECLARE @i tinyint = 1,@x FLOAT = 1.0,@f FLOAT = 1.012     IF @FF = 013         BEGIN14             WHILE @i <= 2015                 BEGIN16                     SET @f = @f + 1.0 / dbo.[T002.求阶乘](@i)17                     SET @i = @i + 118                 END19             SELECT @f20         END21     ELSE22         BEGIN23             WHILE @x >= 0.000124                 BEGIN25                     SET @x = 1.0 / dbo.求阶乘(@i)26                     SET @f = @f + @x27                     SET @i = @i + 128                 END29             SELECT @f30         END31 END32 GO

第三题:从键盘中输入一个数字(不限位数),用循环语句编程判断并输出这个数字的位数。

技术分享
 1 CREATE PROCEDURE [dbo].[T3] 2   @Num AS varchar (200) 3 AS 4 BEGIN 5 /* 6 从键盘中输入一个数字(不限位数),用循环语句编程判断并输出这个数字的位数。 7 */ 8     DECLARE @S CHAR(1) = 1,@i INT = 1 9     WHILE @S <> ‘‘10         BEGIN11             SET @S = SUBSTRING(@Num, @i, 1)12             IF @S <> ‘‘13                 BEGIN14                     SET @i = @i + 115                 END16         END17     SELECT @i - 1,LEN(@Num)18 END19 GO
View Code

 

SQL例题:储存过程