create FUNCTION [dbo].[s_p](@C1 varchar(10))returns varchar(8000)asbegin declare @sql varchar(8000),
declare @sql_data varchar(8000)
set @sql=''
select @sql=@sql+p_sehao+',' from @sql_data where p_id=@C1 order by p_o
if @sql<>'' set @sql=substring(@sql,1,len(@sql)-1)
return @sqlend
以上的函数写法 显示 必须声明表变量 "@sql_data"。
论坛中有高手说可以写成存储过程,本人水平有限,写不出.请高人协助,谢谢
declare @sql_data varchar(8000)
set @sql=''
select @sql=@sql+p_sehao+',' from @sql_data where p_id=@C1 order by p_o
if @sql<>'' set @sql=substring(@sql,1,len(@sql)-1)
return @sqlend
以上的函数写法 显示 必须声明表变量 "@sql_data"。
论坛中有高手说可以写成存储过程,本人水平有限,写不出.请高人协助,谢谢
解决方案 »
- 大神来帮忙看下检索数据库相同内容怎么搞.3q
- 求一个超强的sql语句!!
- 请教一个查询的问题
- 【只要求您说,是,或者不是】的问题,没把握的兄弟,别害我。
- 帮忙想想,这个sql怎么写
- winForm中远程连接数据库代码怎么写的啊
- sql server 2008 使用SELECT查询语句时,提示:Msg 208,Invalid object name 'dbo.学生信息'.
- dts中"执行sql任务"如何使用oracle存储过程阿
- sp_executesql后面怎么带多个SQL语句变量的一个和
- MS SQL Server 2005日志解析相关问题
- 今天,sql2000server服务器经常没有响应了,好多客户端出现没有响应,好长时间提示“超时”
- sql2008 无法连接到服务器?重启后正常
@sql_data 是不表名?,但没有入值
估计要用动态拼接,动态生成sp_executesql
create FUNCTION [dbo].[s_p](@C1 varchar(10), @sql_data varchar(128))returns varchar(8000)asbegindeclare @sql varchar(8000)
set @sql='select p_sehao from '+ @sql_data +' where p_id='+@C1 +'order by p_o'
return @sqlend
--不知道这样子是不是楼主想要的!create table tb(id int,cname varchar(10))
insert into tb
select 1,'a' union all
select 1,'b' union all
select 2,'a'
gocreate proc get_all(@id int,@tbname varchar(100))
as
begin
declare @sql nvarchar(4000)
declare @return nvarchar(1000)
set @return = ''
set @sql = 'select @return = @return + cname + '','' from ' + @tbname + ' where id = ' + ltrim(@id) + ''
exec sp_executesql @sql,N'@return nvarchar(1000) output',@return output
select substring(@return,1,len(@return)-1)
end
goexec get_all 1,'tb'drop proc get_all
drop table tb/*
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
a,b(1 行受影响)
(
@C1 varchar(10),
@sql_data varchar(100)
)
as
begin
declare @sql varchar(8000)
declare @return varchar(100)
set @sql = 'select @return = @return + p_sehao+'','' from '+@sql_data+' where p_id = '+@C1+' order by p_o'
exec sp_executesql @sql,N'@return varchar(1000) output','@return output'
if @return <> ''
set @return = substring(@return,1,len(@return)-1)
end
insert into tt
select 1,1,'1','1'
Create procedure s_p
(
@C1 varchar(10),
@sql_data varchar(100)
)
as
begin
declare @sql nvarchar(4000)
declare @return nvarchar(100)
set @sql = 'select @return = p_sehao from '+@sql_data+' where p_id = '+@C1+' order by p_o'
exec sp_executesql @sql,N'@return nvarchar(100) output',@return output
select isnull(@return,'NULL')
endexec s_p 1,'tt'
drop table tt
drop procedure s_p
----------------------------------------------------------------------------------------------------
1(1 行受影响)