zoukankan      html  css  js  c++  java
  • 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 = 0
    11     CREATE TABLE #(M INT,W INT,C INT)
    12     WHILE @M<=30
    13         BEGIN
    14             WHILE @W<=30
    15                 BEGIN
    16                     SET @C = 30 - @M - @W
    17                     IF 3 * @M + 2 * @W + @C = 50
    18                         BEGIN
    19                             INSERT INTO # VALUES (@M,@W,@C)
    20                         END
    21                     SET @W = @W + 1
    22                 END
    23             SET @M = @M + 1
    24         END
    25     SELECT * FROM #
    26     DROP TABLE #
    27 END
    28 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         BEGIN
    10             SET @y = @y * @x
    11             SET @x = @x + 1
    12         END
    13   RETURN @y
    14 END
    15 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.0
    12     IF @FF = 0
    13         BEGIN
    14             WHILE @i <= 20
    15                 BEGIN
    16                     SET @f = @f + 1.0 / dbo.[T002.求阶乘](@i)
    17                     SET @i = @i + 1
    18                 END
    19             SELECT @f
    20         END
    21     ELSE
    22         BEGIN
    23             WHILE @x >= 0.0001
    24                 BEGIN
    25                     SET @x = 1.0 / dbo.求阶乘(@i)
    26                     SET @f = @f + @x
    27                     SET @i = @i + 1
    28                 END
    29             SELECT @f
    30         END
    31 END
    32 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         BEGIN
    11             SET @S = SUBSTRING(@Num, @i, 1)
    12             IF @S <> ''
    13                 BEGIN
    14                     SET @i = @i + 1
    15                 END
    16         END
    17     SELECT @i - 1,LEN(@Num)
    18 END
    19 GO
    View Code
  • 相关阅读:
    最近面试被问到的问题总结(数据研发方向)
    机器学习利器——Scikit-learn的安装
    编写shell脚本遇到的问题
    DBCP配置数据库连接乱码问题
    eclipse的maven项目报Missing artifact jdk.toos:jdk.toos:jar:1.6错
    [备忘]Windows Server 2008 R2部署FTP FileZilla Server防火墙设置
    Hive-0.x.x
    使用ganglia监控hadoop及hbase集群
    开源监控软件ganglia安装手册
    [Hadoop in Action] 第7章 细则手册
  • 原文地址:https://www.cnblogs.com/fffywfn/p/5953893.html
Copyright © 2011-2022 走看看