--下边的例子能不能满足你?USE pubs GO CREATE PROCEDURE titles_sum @@TITLE varchar(40) = '%', @@SUM money OUTPUT AS SELECT 'Title Name' = title FROM titles WHERE title LIKE @@TITLE SELECT @@SUM = SUM(price) FROM titles WHERE title LIKE @@TITLE GO
create proc proc_t @dt smalldatetime output as set @dt=getdate() return go declare @a smalldatetime exec proc_t @a output
能使用 OutPut 传出量就可以了,别的都不要紧
我不希望执行 EXEC 存储过程名,而是希望在Sql里面调用函数一样调用存储过程,如下: 调用函数的代码 SELECT * FROM TT WHERE EffectDate<=DBO.PIFUN_GET_OriCreateDate(110)函数代码 CREATE FUNCTION PIFUN_GET_OriCreateDate (@PIID INT) RETURNS SmallDateTime AS BEGIN DECLARE @OriDate SmallDateTime DECLARE @strSn Varchar(100) SET @OriDate = '1999-1-1'
SELECT @strSn = ISNULL(Preserve2, SN) , @OriDate=CreateDate FROM PI_PIS WHERE PIID=@PIID IF @strSn <> '' BEGIN IF( PATINDEX('%R_', @strSn) > 0 ) SET @strSn = SUBSTRING(@strSn, 1, PATINDEX('%R_', @strSn)-1 ) SELECT @OriDate=CreateDate FROM PI_PIS WHERE SN=@strSn END return( @OriDate )END
--下边的例子能不能满足你?USE pubs
GO
CREATE PROCEDURE titles_sum @@TITLE varchar(40) = '%', @@SUM money OUTPUT
AS
SELECT 'Title Name' = title
FROM titles
WHERE title LIKE @@TITLE
SELECT @@SUM = SUM(price)
FROM titles
WHERE title LIKE @@TITLE
GO
@dt smalldatetime output
as
set @dt=getdate()
return
go
declare @a smalldatetime
exec proc_t @a output
调用函数的代码
SELECT * FROM TT WHERE EffectDate<=DBO.PIFUN_GET_OriCreateDate(110)函数代码
CREATE FUNCTION PIFUN_GET_OriCreateDate (@PIID INT)
RETURNS SmallDateTime
AS
BEGIN
DECLARE @OriDate SmallDateTime
DECLARE @strSn Varchar(100)
SET @OriDate = '1999-1-1'
SELECT @strSn = ISNULL(Preserve2, SN) , @OriDate=CreateDate FROM PI_PIS WHERE PIID=@PIID IF @strSn <> ''
BEGIN
IF( PATINDEX('%R_', @strSn) > 0 )
SET @strSn = SUBSTRING(@strSn, 1, PATINDEX('%R_', @strSn)-1 )
SELECT @OriDate=CreateDate FROM PI_PIS WHERE SN=@strSn
END return( @OriDate )END