当前位置:

首页 > 软件教程 > 创建一个用TransactSQL语句实现阶乘的函数

创建一个用TransactSQL语句实现阶乘的函数

用TransactSQL语句创建一个阶乘的函数!展开全部居然用SQL这种集合操作语言,来做类C的函数式语言的事(虽然是可以的):(现在的老师也太无聊了,估计自己很少真正使用SQL。/*--=============================================--Author:Yew--Createdate:2016-10-26--Description:计算阶乘--testCode-------------SELECTdbo.uf_Factorial(-1)SELECTdbo.uf_F

本文目录

    用TransactSQL语句创建一个阶乘的函数!

    用TransactSQL语句创建一个阶乘的函数!

    展开全部

    居然用SQL这种集合操作语言,来做类C的函数式语言的事(虽然是可以的):(

    现在的老师也太无聊了,估计自己很少真正使用SQL。

    /*-- =============================================

    -- Author: Yew

    -- Create date: 2016-10-26

    -- Description: 计算阶乘

    -- test Code-------------

    SELECT dbo.uf_Factorial(-1)

    SELECT dbo.uf_Factorial(0)

    SELECT dbo.uf_Factorial(1)

    SELECT dbo.uf_Factorial(10)

    SELECT dbo.uf_Factorial(33) -- 会否溢出?

    ----History-----------------

    -- =============================================*/

    ALTER FUNCTION dbo.uf_Factorial(

    @N INT

    ) RETURNS BIGINT

    AS

    BEGIN

    IF @N RETURN NULL -- RAISERROR(N'参数N 不能为负')

    IF @N = 0

    RETURN 1

    RETURN dbo.uf_Factorial(@N - 1) * @N --递归

    END

    GO

    编一个PLSQL函数或过程功能

    1、存储过程如下:

    create or replace procedure pro_parse_string(

    a_SourceString IN VARCHAR2, --源字符串

    a_Delimiter IN VARCHAR2 --拆分的分隔符

    ) is

    iBegin INTEGER;

    sValue VARCHAR2(200);

    sSplitString VARCHAR2(1000);

    BEGIN

    --检查参数

    IF a_SourceString IS NULL OR a_Delimiter IS NULL THEN

    RETURN;

    END IF;

    IF a_SourceString = '' THEN

    RETURN;

    END IF;

    IF instr(a_SourceString,a_Delimiter) = 0 THEN

    dbms_output.put_line(a_SourceString);

    RETURN;

    END IF;

    sSplitString := a_SourceString;

    LOOP

    iBegin := INSTR(sSplitString,a_Delimiter);

    EXIT WHEN iBegin sValue := Substr(sSplitString,1,iBegin - 1);

    sSplitString := SubStr(sSplitString,iBegin + 1);

    dbms_output.put_line(sValue);

    IF sSplitString IS NULL THEN

    EXIT;

    END IF;

    END LOOP;

    --Set last entry

    sSplitString := SubStr(sSplitString, iBegin);

    --Update array and counter if necessary

    IF Length(sSplitString) >0 THEN

    dbms_output.put_line(sSplitString);

    END IF;

    end pro_parse_string;

    2、输入变量测试:

    exec pro_parse_string('1,2,10,123,1,121212',',');

    自己编写sql函数

    create function [dbo].[Get_StrArrayStrOfIndex]

    (

    @str varchar(1024), --要分割的字符串

    @split varchar(10), --分隔符号

    @index int --取第几个元素

    )

    returns varchar(1024)

    as

    begin

    declare @location int

    declare @start int

    declare @next int

    declare @seed int

    set @str=ltrim(rtrim(@str))

    set @start=1

    set @next=1

    set @seed=len(@split)

    set @location=charindex(@split,@str)

    while @location0 and @index>@next

    begin

    set @start=@location+@seed

    set @location=charindex(@split,@str,@start)

    set @next=@next+1

    end

    if @location =0 select @location =len(@str)+1

    --这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。

    return substring(@str,@start,@location-@start)

    end

    使用举例:

    select id,code=dbo.Get_StrArrayStrOfIndex(code,'.',4) from code_table

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    软件教程
    相关文章 更多
    endnote怎么导入参考文献格式
    endnote怎么导入参考文献格式

    详解 Windows 端 EndNote 2025 如何导入期刊要求的参考文献格式。涵盖下载 .ens 文件、另存副本、勾选常用样式及在 Word 中切换输出样式的操作步骤,帮助作者快速适配投稿规范。

    typora怎么高亮 文本标记语法设置
    typora怎么高亮 文本标记语法设置

    本教程演示如何在 Windows 版 Typora 中开启 Highlight 高亮功能,通过双等号语法标记重点文本,并展示如何编辑、取消高亮及验证源码保存状态。

    讯飞智作平台 在线创作功能介绍
    讯飞智作平台 在线创作功能介绍

    了解讯飞智作平台的在线创作流程:从文字配音到数字人视频生成,再到AIGC工具箱的素材处理。通过具体案例演示如何选择合适的功能入口、调整参数及核对成品权益,适合需要快速制作音频或播报视频的用户参考。

    gemini 官网 入口网页版登录访问方法
    gemini 官网 入口网页版登录访问方法

    本文详细介绍 Gemini 官方网页版入口地址、个人与组织账号登录流程、运行环境要求、账号体系差异对比及常见访问异常的排查解决方法。

    正版steam官网入口登录下载安装操作教程
    正版steam官网入口登录下载安装操作教程

    针对初次接触Steam平台的玩家,提供正版Steam官网网址识别、客户端官方安装包下载、本地安装配置及账号安全注册登录的详细图文操作教程。

    鼠标宏设置软件怎么设置?详细操作教程
    鼠标宏设置软件怎么设置?详细操作教程

    针对各类支持驱动配置的鼠标,系统梳理鼠标宏设置软件的核心设置逻辑、全流程操作步骤、运行模式选择与排错验证方法,帮助读者准确掌握宏功能的配置与使用。

    endnote怎么插入文献 Word添加引文步骤
    endnote怎么插入文献 Word添加引文步骤

    详解如何在 Word 中使用 EndNote 插件插入文献引用。涵盖从库中搜索记录、插入引文、选择样式到更新参考文献表的步骤,确保引文格式准确且可随时更新。

    再漫画官网首页入口及在线观看方法
    再漫画官网首页入口及在线观看方法

    了解如何进入再漫画官网首页,并通过界面导览熟悉分类浏览、搜索查找及在线阅读器的基本使用方法,提升阅读体验。

    Codex自动审查、缓存与额度重置有什么区别?
    Codex自动审查、缓存与额度重置有什么区别?

    针对Codex近期更新引发的讨论,本文厘清自动审查的功能边界,区分即时额度恢复与留存重置卡的不同,帮助用户理性评估更新价值,避免对缓存和权益产生误解。

    讯飞绘文ai AI写作功能介绍
    讯飞绘文ai AI写作功能介绍

    了解讯飞绘文AI写作功能:涵盖选题推荐、智能起稿、风格设定、知识融合及稿件校对。通过社区活动案例,掌握从构思到排版的完整操作逻辑,提升内容创作效率。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。