例子:USE AdventureWorks2012;
GO
DECLARE @SQLString nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);
DECLARE @SalesOrderNumber nvarchar(25);
DECLARE @IntVariable int;
SET @SQLString = N'SELECT @SalesOrderOUT = MAX(SalesOrderNumber)
FROM Sales.SalesOrderHeader
WHERE CustomerID = @CustomerID';
SET @ParmDefinition = N'@CustomerID int,
@SalesOrderOUT nvarchar(25) OUTPUT';
SET @IntVariable = 22276;
EXECUTE sp_executesql
@SQLString
,@ParmDefinition
,@CustomerID = @IntVariable
,@SalesOrderOUT = @SalesOrderNumber OUTPUT;
-- This SELECT statement returns the value of the OUTPUT parameter.
SELECT @SalesOrderNumber;
-- This SELECT statement uses the value of the OUTPUT parameter in
-- the WHERE clause.
SELECT OrderDate, TotalDue
FROM Sales.SalesOrderHeader
WHERE SalesOrderNumber = @SalesOrderNumber;
GO
DECLARE @SQLString nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);
DECLARE @SalesOrderNumber nvarchar(25);
DECLARE @IntVariable int;
SET @SQLString = N'SELECT @SalesOrderOUT = MAX(SalesOrderNumber)
FROM Sales.SalesOrderHeader
WHERE CustomerID = @CustomerID';
SET @ParmDefinition = N'@CustomerID int,
@SalesOrderOUT nvarchar(25) OUTPUT';
SET @IntVariable = 22276;
EXECUTE sp_executesql
@SQLString
,@ParmDefinition
,@CustomerID = @IntVariable
,@SalesOrderOUT = @SalesOrderNumber OUTPUT;
-- This SELECT statement returns the value of the OUTPUT parameter.
SELECT @SalesOrderNumber;
-- This SELECT statement uses the value of the OUTPUT parameter in
-- the WHERE clause.
SELECT OrderDate, TotalDue
FROM Sales.SalesOrderHeader
WHERE SalesOrderNumber = @SalesOrderNumber;
解决方案 »
- 关于sql server2000插入表时的增增列问题
- 各位大师请帮帮小弟解决一下数据库字段问题!
- sql2005 有没有触发这样的功能,既有一个表变化了,就执行一条语句。 是这样的,有两个数据库,a自动或者手动的要在b里写数据。但a写的数据,有些是b不需要
- 跪求SQL语句,4表连接查询!
- 急~~~~~
- 三个表联合查询(查出所有回复用户的星级)求高手 上次的有点缺陷
- 问一个问题,查询的问题,不知道能不能实现啊,比较着急,在线等,谢谢
- "on update cascade" 与 "on update no action" 区别在哪?
- 刚用数据库生成的脚本,怎么反过来分析查询就出错了呢?
- SQL事物复制,可以在订阅服务器上无限制建索引吗?
- 存储过程中如果嵌套了多个事务有什么实际用吗?
- 大神求助 创建分区方案找不到对象
额,是我表达没清楚
有张表select begintime,endtime from time
然后有个返回值的函数
declare @Hours real
exec @Hours=aGetLeaveHours_return @begintime,@endtime
select @Hours表中的begintime,endtime分别是@begintime,@endtime这两个现在想要得到的结果集是
select begintime,endtime,@Hours from time
已begintime,endtime这两个为参数得到@hours,然后平在一起大神,求解
额,是我表达没清楚
有张表select begintime,endtime from time
然后有个返回值的函数
declare @Hours real
exec @Hours=aGetLeaveHours_return @begintime,@endtime
select @Hours表中的begintime,endtime分别是@begintime,@endtime这两个现在想要得到的结果集是
select begintime,endtime,@Hours from time
已begintime,endtime这两个为参数得到@hours,然后平在一起大神,求解你说是函数,但是函数是不能exec 函数的,直接:select begintime,endtime,aGetLeaveHours_retur(@begintime,@endtime) from time
额,是我表达没清楚
有张表select begintime,endtime from time
然后有个返回值的函数
declare @Hours real
exec @Hours=aGetLeaveHours_return @begintime,@endtime
select @Hours表中的begintime,endtime分别是@begintime,@endtime这两个现在想要得到的结果集是
select begintime,endtime,@Hours from time
已begintime,endtime这两个为参数得到@hours,然后平在一起大神,求解你说是函数,但是函数是不能exec 函数的,直接:select begintime,endtime,aGetLeaveHours_retur(@begintime,@endtime) from time
我错了,是我写错了,是个存储过程
不大想用游标,效率太低了,数据量比较大
额,是我表达没清楚
有张表select begintime,endtime from time
然后有个返回值的函数
declare @Hours real
exec @Hours=aGetLeaveHours_return @begintime,@endtime
select @Hours表中的begintime,endtime分别是@begintime,@endtime这两个现在想要得到的结果集是
select begintime,endtime,@Hours from time
已begintime,endtime这两个为参数得到@hours,然后平在一起大神,求解你说是函数,但是函数是不能exec 函数的,直接:select begintime,endtime,aGetLeaveHours_retur(@begintime,@endtime) from time
我错了,是我写错了,是个存储过程
不大想用游标,效率太低了,数据量比较大哦,你把那个返回值,直接作为输出参数就可以的,就是那个@hours 作为存储过程的输出参数
额,是我表达没清楚
有张表select begintime,endtime from time
然后有个返回值的函数
declare @Hours real
exec @Hours=aGetLeaveHours_return @begintime,@endtime
select @Hours表中的begintime,endtime分别是@begintime,@endtime这两个现在想要得到的结果集是
select begintime,endtime,@Hours from time
已begintime,endtime这两个为参数得到@hours,然后平在一起大神,求解你说是函数,但是函数是不能exec 函数的,直接:select begintime,endtime,aGetLeaveHours_retur(@begintime,@endtime) from time
我错了,是我写错了,是个存储过程
不大想用游标,效率太低了,数据量比较大哦,你把那个返回值,直接作为输出参数就可以的,就是那个@hours 作为存储过程的输出参数
这样得到的@hours只是一个唯一值吧,现在是每一行的begintime和endtime都不一样,所以@hours没一行也不一样额,有具体语句可以参考吗
额,是我表达没清楚
有张表select begintime,endtime from time
然后有个返回值的函数
declare @Hours real
exec @Hours=aGetLeaveHours_return @begintime,@endtime
select @Hours表中的begintime,endtime分别是@begintime,@endtime这两个现在想要得到的结果集是
select begintime,endtime,@Hours from time
已begintime,endtime这两个为参数得到@hours,然后平在一起大神,求解你说是函数,但是函数是不能exec 函数的,直接:select begintime,endtime,aGetLeaveHours_retur(@begintime,@endtime) from time
我错了,是我写错了,是个存储过程
不大想用游标,效率太低了,数据量比较大哦,你把那个返回值,直接作为输出参数就可以的,就是那个@hours 作为存储过程的输出参数
这样得到的@hours只是一个唯一值吧,现在是每一行的begintime和endtime都不一样,所以@hours没一行也不一样额,有具体语句可以参考吗那就把存储过程改成函数把,函数可以返回多行记录,然后再和其他表关联的。
(
@s varchar(8000), --要分拆的字符串
@split varchar(10) --分隔字符
)
returns @re table( --要返回的临时表
col varchar(1000) --临时表中的列
)
as
begin
declare @len int
set @len = LEN(@split) --分隔符不一定就是一个字符,可能是2个字符
while CHARINDEX(@split,@s) >0
begin
insert into @re
values(left(@s,charindex(@split,@s) - 1))
set @s = STUFF(@s,1,charindex(@split,@s) - 1 + @len ,'') --覆盖:字符串以及分隔符
end
insert into @re values(@s)
return --返回临时表
endGOselect *
from dbo.f_splitSTR('a,b,c',',')
/col
a
b
c**/