导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

请教个动态创建函数的存储过程!

WL798 2008-01-04 04:16:04
参数表:

参数 值
A 1
B 2
D 3


因为参数表经常变化,我想并动态创建一个函数,创建时遍历参数表,这个需要游标,请问这样的存储过程该怎么写?
CREATE function dbo.aaa(@st varchar(15))
returns varchar(12)
as
begin
declare @p varchar(12)
if @st='A' set @p='1'
else if @st='B' set @p='2'
else if @st='D' set @p='3'
else set @p='x'
return @p
end
...全文
66 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
WL798 2008-01-05
谁能帮我改改啊, 游标第一行该怎么判断?
CREATE PROCEDURE CREAaaa ()
AS
declare @SQL nvarchar(8000) ,@CanSu varchar(20), @Zhi varchar(20),

if exists(select 1 from sysobjects where name='''aaa''' and xtype='FN' and status>0) drop function aaa
set @SQL= 'CREATE function dbo.aaa(@st varchar(15)) returns varchar(12) as"

declare cursor1 cursor for select 参数,值 from 参数表
open cursor1
fetch cursor1 into @CanSu, @Zhi
while(@@fetch_status = 0)
begin

这里用游标把参数表中所有数据遍取出, 生成动态字符串
set @sql=@sql + 'if @st= ' + @CanSu + 'set @p=''' + @Zhi
end

SET @SQL=@sql + 'else set @p='x' return @p '
EXEC (@SQL)

RETURN
GO
回复
WL798 2008-01-05
我想要的大致是这样的,我不会写游标,哪位高手帮我写一个,多谢了!
CREATE PROCEDURE CREAaaa ()
AS
declare @SQL nvarchar(8000)
if exists(select 1 from sysobjects where name='aaa' and xtype='FN' and status>0) drop function aaa
set @SQL= 'CREATE function dbo.aaa(@st varchar(15)) returns varchar(12) as"
declare cursor1 cursor for select 参数,值 from 参数表
open cursor1
fetch cursor1 into
while(@@fetch_status = 0)
begin

这里用游标把参数表中数据循环取出, 生成动态字符串
set @sql= @sql + ' if @st=参数 set @p=值 '
end

SET @SQL=@sql + 'else set @p='x' return @p '
EXEC (@SQL)
RETURN
GO
回复
WL798 2008-01-05
第一行应该先删除:if exists(select 1 from sysobjects where name='aaa' and xtype='FN' and status>0) drop function aaa
回复
WL798 2008-01-04
各位老大,不是这个意思,我的意思的把"参数表"中的数据用游标逐行取出来,动态创建一个函数,该函数包含"参数表"中所有的数据.因为要大数据量查询,这样比较快,而不是每次去查询参数表. 每次参数表中有更改就执行这个存储过程. 应该类似这样
declare @SQL nvarchar(8000)
set @SQL= 'CREATE function dbo.aaa(@st varchar(15)) returns varchar(12) as"


这里用游标把参数表中所有数据遍取出, 参数表中有几行这里就生成几行
set @sql= @sql + ' if @st='A' set @p='1' '






SET @SQL=@sql + 'else set @p='x' return @p '

EXEC (@SQL)
回复
晓风残月0110 2008-01-04
树上的鸟儿的方法应该可以
把条件作为参数 来查询
回复
chuifengde 2008-01-04
CREATE function dbo.aaa(@st varchar(15))   
returns varchar(12)
as
begin
declare @p varchar(12)
select @p=值 from [参数表] where 参数=@st
return @p
end
回复
dawugui 2008-01-04
没看懂,帮顶.
回复
-狙击手- 2008-01-04
create proc proc_name
@st varchar(15),
@ret varchar(15) output
as
select @ret = 值 from tablename where 参数 = @st
set @ret = isnull(@ret,'x')


go
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告