订购了移动联通30元畅越流量月包取消续订会自动续订,如何取消啊?

sql函数如何让返回两个值?-MS-SQLServer/基础类-mssql-电脑编程网sql函数如何让返回两个值?-MS-SQLServer/基础类作者:wangdg520 和相关&&我想在function中返回两个函数?可以实现吗?怎样实现?谢谢高手指教------回答---------------其他回答(20分)---------
SQL code
IF OBJECT_ID('FUN_MU') IS NOT NULL DROP FUNCTION FUN_MU
IF OBJECT_ID('PROC_MU') IS NOT NULL DROP PROCEDURE PROC_MU
GO
--假设原来的函数是这样的
CREATE FUNCTION FUN_MU(@I INT)
RETURNS INT
AS
BEGIN
SELECT @I=@I+1
RETURN @I
END
GO
SELECT DBO.FUN_MU(3)
--4
GO
--想返回两个值的话可以使用表值函数或者带输出参数的存储过程
--表值函数
DROP FUNCTION FUN_MU
GO
CREATE FUNCTION FUN_MU(@I INT)
RETURNS @T TABLE(COL1 INT,COL2 INT)
AS
BEGIN
INSERT INTO @T
SELECT @I+1,@I+2
RETURN
END
GO
SELECT COL1,COL2 FROM DBO.FUN_MU(3)
--4
5
GO
--使用带输出参数的存储过程
CREATE PROCEDURE PROC_MU(@I INT,@I1 INT OUTPUT,@I2 INT OUTPUT)
AS
BEGIN
SELECT @I1=@I+1,@I2=@I+2
END
GO
DECLARE @I1 INT,@I2 INT
EXEC PROC_MU 3,@I1 OUTPUT,@I2 OUTPUT
SELECT @I1,@I2
--4
相关资料:|||||||sql函数如何让返回两个值?-MS-SQLServer/基础类来源网络,如有侵权请告知,即处理!编程Tags:                &                    SQL Server中的用户自定义函数
&SQL Server中的用户自定义函数
用户自定义函数(UDF:User Defined Functions)的定义:
同存储过程类似,用户自定义函数是一组有序的T-SQL语句,UDF被预先优化和编译并且可以作为一个单元来进行调试。UDF和存储过程的主要区别在于返回结果的方式。为了能支持多种不同的返回值,UDF比存储过程有更多的限制。
UDF的两种类型:
1. & & &返回标量值的UDF
2. & & &返回表的UDF
函数的确定性:
确定性指的是,返回的结果是确定的;或者说在未改变什么的情况下,使用同一个函数,在同样的条件下,返回的值是不会改变的。
UDF可以是确定性的也可以是非确定性的。
当UDF需要达到确定性的要求时,需要满足的4个条件:
1. & & &函数必须是模式绑定的。这意味着函数所依赖的任何对象会有一个依赖记录,并且在没有删除这个依赖的函数之前都不允许改变这个对象。
2. & & &函数引用的所有其他函数,无论其是用户定义的还是系统定义的,都必须是确定的。
3. & & &不能引用在函数外部定义的表(可以使用表变量和临时表,只要它们是在函数作用域内定义的就行)。
4. & & &不能使用扩展存储过程。
函数确定性的检查:
Select objectproperty(Object_id(&函数名&), &IsDeterministic&); &君,已阅读到文档的结尾了呢~~
SQL自定义函数,sql自定义函数语法,mysql自定义函数,sql自定义函数调用,触发器,自定义函数,oracle自定义函数,sql函数大全,sql自定义函数 if,excel 自定义函数,matlab自定义函数
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
SQL自定义函数
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口自定义函数不能做insert,update的操作。 请教这种需求该怎么处理 - Sql Server&&&&>>&& 自定义函数不能做insert,update的操作。 请问这种需求该怎么办有订单表Order和条码表BarCode
根据条件查询表Order的数据,&将符合条件的表Order数据写入表BarCode&(一条表Order数据,&可能写入多条表BarCode,字段值不同)
--解释一下字段的意义
--OrderID&订单编号
--Quantity&当前订单的生产数量
--BoxQuantity&当前出货箱的装箱数量
--条码数量=Quantity/BoxQuantity&,条码数量等于几,在表BarCode中就有几条记录
--查询表A,&执行自定义函数
select&dbo.CreateBarCode(Order.OrderID,Order.Quantity,Box.BoxQuantity)&from&Order&inner&join&Box&on&Order.BoxID=Box.BoxID
--生成条码的自定义函数
function&CreateBarCode(@OrderID&varchar,@Quantity&int,@BoxQuantity&int)
return&bit
&&&&&&&&declare&@count&int&=&@;
&&&&&&&&while(@count&0)
&&&&&&&&begin
&&&&&&&&&&&&&--insert&into&BarCode&...此处省略&&新增该订单条码数据
&&&&&&&&end
但是SQL编译器说在自定义函数中使用insert,update&是不安全的操作。&不允许这种写法。&而我想改用存储过程。却没法在select&语句中调用。
为什么我想用function&来做这个事情?
因为自定义函数可以嵌套在select语句中使用。执行批处理操作。
select&top&100&dbo.MyFuction(field1,field2)&from&tb
这样MyFuction这个函数就执行了100次。&写法上很方便
而存储过程没法这样嵌套在select语句中调用,调用存储过程必须要用到exec&....被语法困住&真是一件很悲催的事。
除非。。用游标循环表的结果集。。在游标循环中调用存储过程。但是基于性能问题的考虑。&游标的方式我抛弃了。
请教一下各位&有没有其他解决方案。&我暂时想不到更好的办法------解决方案--------------------select&后插入不行么,为啥非要写入函数里。------解决方案--------------------兄弟,谁说那只是处理一条数据了,你这哪是什么特殊需求啊,很常见好么。------解决方案--------------------建议用存储过程实现,且应该是可以实现的,
请问有什么问题?不太明白LZ无法用存储过程的原因,可否举例说明.------解决方案--------------------引用:Quote: 引用:
兄弟,谁说那只是处理一条数据了,你这哪是什么特殊需求啊,很常见好么。
大哥&我觉得你还是没明白我的意思。我给你举个数据的例子吧
ID&&&&&Quantity&&&&BoxQuantity&&&&&AllotID
1&&&&&&&&&&1000&&&&&&&&&&&&&500&&&&&&&&&&&&&&P1234
2&&&&&&&&&&1000&&&&&&&&&&&&&500&&&&&&&&&&&&&&P1234
3&&&&&&&&&&1000&&&&&&&&&&&&&500&&&&&&&&&&&&&&P1234
根据SQL语句&
select&dbo.CreateBarCode(Order.OrderID,Order.Quantity,Box.BoxQuantity)&from&Order&inner&join&Box&on&Order.BoxID=Box.BoxID&where&Order.AllotID='P1234'
会查出4条订单数据。&&他们调用CreateBarCode函数,传入字段参数,CreateBarCode会调用4次
在CreateBarCode函数的内部
--生成条码的自定义函数
function&CreateBarCode(@OrderID&varchar,@Quantity&int,@BoxQuantity&int)
return&bit
&&&&&&&&declare&@count&int&=&@;&&&--&等于两条。那么同一个OrderID&会往BarCode表写两条数据
&&&&&&&&while(@count&0)
&&&&&&&&begin
&&&&&&&&&&&&&--insert&into&BarCode&...此处省略&&新增该订单条码数据
&&&&&&&&end
一个OrderID的数据&会往BarCode表写两条数据
之前查了4条Order数据,&BarCode就会新增8条数据。&
我是这个逻辑。。。
大哥的那个写法&insert&xxx&select&我用过。&但是数据和数据是一对一的。&中间没能做逻辑运算。&
大哥你这下应该明白我的意思了吧。。
兄弟啊,select时是可以对选择的数据进行汇总的啊,别一根筋啊,&不知道你那插入的数据生成规则,没法给你写出来。不过看你问的问题,真替你着急啊。------解决方案--------------------看需求,你那很明显是根据查出来的基础表数据汇总后,保存到另一表中,明显是个插入或者更新操作,你怎么能写成select呢,你这不是被语法困住了,是被技术、思维困住了啊。------解决方案--------------------应该可以不用函数的,以下举个简单的例子,希望对LZ有用.
create&table&#t(orderid&varchar(5),qty&int)
insert&into&#t
&select&'A',3&union&all
&select&'B',5
--&产生3笔A记录和5笔B记录.
select&a.orderid,b.number
&from&#t&a
&cross&apply
&(select&number
&&from&master.dbo.spt_values
&&where&type='P'&and&number&between&1&and&a.qty)&b
orderid&number
-------&-----------
(8&row(s)&affected)

我要回帖

更多关于 联通30元畅越流量月包取消续订 的文章

 

随机推荐