CREATE function Fun_GetUserID(@TableName varchar(30),@FieldUser varchar(30),@FieldDocNo varchar(30),@DocNo int)
returns varchar(300)
as
begin
declare @SqlText varchar(8000)
select @SqlText ='select isnull('+@FieldUser+','' '') from '+@TableName +' where '+@FieldDocNo+'='+str(@DocNo) return @SqlText
end-----------------------------------
上面是我写的自定义函数 select dbo.Fun_GetUserID('Ass_Work_WorkPlan','CreatID','SysID','1')
==================================
这是我的调用自定义函数返回结果:select isnull(CreatID,' ') from Ass_Work_WorkPlan where SysID=1=============================
当这不是我要的结果,其实我想访问的是:select isnull(CreatID,' ') from Ass_Work_WorkPlan where SysID=1的查询值:104
returns varchar(300)
as
begin
declare @SqlText varchar(8000)
select @SqlText ='select isnull('+@FieldUser+','' '') from '+@TableName +' where '+@FieldDocNo+'='+str(@DocNo) return @SqlText
end-----------------------------------
上面是我写的自定义函数 select dbo.Fun_GetUserID('Ass_Work_WorkPlan','CreatID','SysID','1')
==================================
这是我的调用自定义函数返回结果:select isnull(CreatID,' ') from Ass_Work_WorkPlan where SysID=1=============================
当这不是我要的结果,其实我想访问的是:select isnull(CreatID,' ') from Ass_Work_WorkPlan where SysID=1的查询值:104
解决方案 »
- 字段太多会影响查询性能
- Windows2008_R2能安装SQLSERVER2000 ENT么?
- 各位大哥,我想做一个公交信息查询系统,想求基于matlab的 dijkstra最短路径算法的vb代码
- 关于添加组件的问题,无法选择“对现有SQL Server实例进行升级、删除或添加组件”选项。
- 关于循环时间段的问题
- 如何將多行記錄合並到一行呢?
- 一个SQL小小CASE问题,向大家请教.
- 在数据库中存放“性别”或“所属部门”时,是存汉字还是其他数字代码?如果存汉字有什么弊端码?
- 怎么把datetime转化成“YYYY-mm-dd"的问题
- 将字符串转换为smalldatatime数据类型时失败
- 更新带有触发器的表,出现不能update现像,如何解决
- SQL语句结束符号是什么?
as
begin
declare @SqlText varchar(8000)
select @SqlText ='select isnull('+@FieldUser+','' '') from '+@TableName +' where '+@FieldDocNo+'='+str(@DocNo) exec(@SqlText)
end
@TableName varchar(30),
@FieldUser varchar(30),
@FieldDocNo varchar(30),
@DocNo int,
@SqlText varchar(300) output
as
select @SqlText ='select isnull('+@FieldUser+','' '') from '+@TableName +' where '+@FieldDocNo+'='+str(@DocNo)
as
begin
declare @SqlText varchar(8000)
select @SqlText ='select isnull('+@FieldUser+','' '') from '+@TableName +' where '+@FieldDocNo+'='+str(@DocNo) EXEC(@SqlText)
end
GO
=================================写存储过程我知道啊,当不能: select Pro_GetUserID('Ass_Work_WorkPlan','CreatID','SysID','1')调用了
動態語句在函數裡是沒辦法執行的。
=================================写存储过程我知道啊,当不能: select Pro_GetUserID('Ass_Work_WorkPlan','CreatID','SysID','1')调用了
------這麼執行EXEC Pro_GetUserID 'Ass_Work_WorkPlan','CreatID','SysID','1'
在另外一个存储过程中用到取Pro_getuserid的返回值:
=================================================
也不可以啊
--去掉select
exec Wf_OperCreateID 'Ass_Work_WorkPlan','CreatID','SysID','1'
--去掉select
exec Wf_OperCreateID 'Ass_Work_WorkPlan','CreatID','SysID','1'
=============================================
那我怎么使用执行存储过程的返回值啊
我需要在另外一个存储过程中调用Wf_OperCreateID并且获取返回的值啊
-------------------建立存儲過程
CREATE Procedure Pro_GetUserID(@TableName varchar(30),@FieldUser varchar(30),@FieldDocNo varchar(30),@DocNo int, @Value Varchar(100) Output)
as
begin
declare @SqlText Nvarchar(4000)
select @SqlText ='select @Value = isnull('+@FieldUser+','' '') from '+@TableName +' where '+@FieldDocNo+'='+str(@DocNo) EXEC sp_executesql @SqlText, N'@Value Varchar(100) Output', @Value Output
end
GO--調用
Declare @Value Varchar(100)
exec Wf_OperCreateID 'Ass_Work_WorkPlan','CreatID','SysID','1', @Value Output
Select @Value