
#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 不要漏掉
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)