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

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
...全文
88 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧