sql创建一个返回变量值的自定义函数,输入矩形的长和宽就能计算矩形的面积。并调用该函数计算长5宽3

sql创建一个返回变量值的自定义函数,输入矩形的长和宽就能计算矩形的面积。并调用该函数计算长5宽3,第1张

#include <iostream>

using namespace std;

int main()

{

double l,w,c,s;

cout<<"输入矩形的长和宽:";

cin>>l>>w;

c=2l+2w;

s=lw;

cout<<"c="<<c<<endl;

cout<<"s="<<s<<endl;

return 0;

}

GO

DECLARE @i INT

DECLARE @k INT

SET @k = 0

DECLARE @rtStr NVARCHAR(4000)

SET @str = @str + @sep

SET @i = CHARINDEX(@sep, @str)

WHILE @i > 0

BEGIN

--INSERT INTO @tb

--VALUES ( LEFT(@str, @i - 1) )

IF @k = @index

BEGIN

SET @rtStr = LEFT(@str, @i - 1)

BREAK

END

SET @str = SUBSTRING(@str, @i + 1, 4000)

SET @i = CHARINDEX(@sep, @str)

SET @k = @k + 1

END

SELECT RTRIM(LTRIM(@rtStr))

GO

你把这一段当成是一个SQL语句,放到程序里面去执行就是了

@str NVARCHAR(4000) ,

@sep NVARCHAR(4000) ,

@index INT

这几个东西用程序里面的string去代替就可以了

语句块也是一条SQL语句!!谢谢

create function Add(@num_a int ,@num_b int) returns bigint

begin

declare @countTotal bigint

set @countTotal = (@num_a + @num_b

return @countTotal

end

Sql Server自定义聚合函数详细步骤

开始->

输出->

首先用VS2008/VS2005建立一个SQL Server项目,右键解决方案添加新项

点击“确定”按钮后,SQL Server项目会要求连接一个数据库,我们可以选择一个数据库

然后在工程中加入一个聚合类(joinstrcs),如图

joinstrcs中的最终代码如下:

using System;

using SystemData;

using SystemDataSqlClient;

using SystemDataSqlTypes;

using MicrosoftSqlServerServer;

using SystemText;

                             

                             

[Serializable]

[SqlUserDefinedAggregate(

    FormatUserDefined, //use custom serialization to serialize the intermediate result

    IsInvariantToNulls = true, //optimizer property

    IsInvariantToDuplicates = false, //optimizer property

    IsInvariantToOrder = false, //optimizer property    

    MaxByteSize = 8000), //maximum size in bytes of persisted value

]

                             

                             

public struct JoinStr:IBinarySerialize

{

    private StringBuilder sbIntermediate;

    public void Init()

    {

       sbIntermediate = new StringBuilder();

    }

                             

    public void Accumulate(SqlString Value)

    {

                             

        if (Value == null || ValueToString()ToLower()Equals("null"))

        {

            return;

        }

        else

        {

            sbIntermediateAppend(Value);

        }

    }

                             

    public void Merge(JionStr Group)

    {

        sbIntermediateAppend(GroupsbIntermediate);

    }

                             

    public SqlString Terminate()

    {

                                    

        return new SqlString(sbIntermediateToString());

    }

                             

    // This is a place-holder member field

                             

                             

    #region IBinarySerialize Members

                             

    public void Read(SystemIOBinaryReader r)

    {

        sbIntermediate = new StringBuilder(rReadString());

    }

                             

    public void Write(SystemIOBinaryWriter w)

    {

        wWrite(thissbIntermediateToString());    

    }

    #endregion

}

在编写完上述代码后,可以使用Visual Studio来部署(右向工程,在d出菜单上选“部署”即可)。

在执行上面的SQL语句之前,需要将SQL Server2005的clr功能打开

现在可以使用joinstr来聚合字符串了。

select [t_code_role][role_mc] as '角色',dboJoinStr([t_code_right][right_mc]+',') as '权限' from [t_data_roleright],[t_code_right],[t_code_role] where [t_data_roleright][role_bm]=[t_code_role][role_bm] and [t_data_roleright][right_bm]=[t_code_right][right_bm] group by [t_code_role][role_mc]

可以的,如:

--创建函数---------------

create function funDIY(@fieldname as int)

returns int --返回平方

as

begin

return @fieldname2

end

go

--调用函数---------------

update 表 set 字段=dbofunDIY(字段) --注意:dbo 不要漏掉

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/13491790.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存