create proc getName(@seq int,@tablename varchar(100)) --(@seq,@strSQL)
as
declare @aa varchar(8000)
set @aa='declare @str varchar(8000) select @str=@str+'',''+f0002 from '+@tablename+' where seq='+cast(@seq as varchar(10))+' select @str 结果'
exec @aa
end
--调用
exec getName 1,'username'
as
declare @aa varchar(8000)
set @aa='declare @str varchar(8000) select @str=@str+'',''+f0002 from '+@tablename+' where seq='+cast(@seq as varchar(10))+' select @str 结果'
exec @aa
end
--调用
exec getName 1,'username'
解决方案 »
- recordcount这个属性在sql2008里不支持了是么,每次都是返回-1,sql2000就没事儿
- 数据库坏了,如何恢复呢,要死命了
- 一个关于自定义函数的问题,求高手帮助~!
- SQL提示:在流水模式下,事物无法启动!
- 存储过程 给in怎么传参啊?
- sql server 2000安装失败
- sql语句不起作用,帮忙看看怎么回事。急等!
- sqlserver浮点数float转换成double,怎么解决?
- 太懒了。。。上网求答案。。。
- 一个理解不是很清楚的概念问题:there is an N before the start of the string, which indicates that the data following the N is Uni
- 请大家帮帮忙,只有40分了,在线等待
- 拆分字符串
as
declare @str varchar(8000)
select @str=@str+'',''+f0002 from '+@tablename+' where seq='+@seq+''
exec (@str)
as
exec('select'+@str=@str+','+f0002 from'+@tablename+where seq='+@seq')
end
报以下错误:Could not find stored procedure ' select @str=@str+','+f0002
from viewstock77_78 where p_seq=2 select @str=right(@str,len(@str)-1) '.
select getName(seq,'tablenem') from dbtable where seq in (1,2,3,4)
过程能这样调用吗?
均不行,因为函数必须有返回的数据据。而且在调用时会报找不到存储过程。
这就说明了,如果使用execute,只能调用扩展存储过程,你的那个语句当然不是存储过程,所以只会报错
_______/下面的具体说明
函数中的有效语句类型包括: DECLARE 语句,该语句可用于定义函数局部的数据变量和游标。
为函数局部对象赋值,如使用 SET 给标量和表局部变量赋值。
游标操作,该操作引用在函数中声明、打开、关闭和释放的局部游标。不允许使用 FETCH 语句将数据返回到客户端。仅允许使用 FETCH 语句通过 INTO 子句给局部变量赋值。
控制流语句。
SELECT 语句,该语句包含带有表达式的选择列表,其中的表达式将值赋予函数的局部变量。
INSERT、UPDATE 和 DELETE 语句,这些语句修改函数的局部 table 变量。
EXECUTE 语句,该语句调用扩展存储过程。
在查询中指定的函数的实际执行次数在优化器生成的执行计划间可能不同。示例为 WHERE 子句中的子查询唤醒调用的函数。子查询及其函数执行的次数会因优化器选择的访问路径而异。用户定义函数中不允许使用会对每个调用返回不同数据的内置函数。用户定义函数中不允许使用以下内置函数:@@CONNECTIONS @@PACK_SENT GETDATE
@@CPU_BUSY @@PACKET_ERRORS GetUTCDate
@@IDLE @@TIMETICKS NEWID
@@IO_BUSY @@TOTAL_ERRORS RAND
@@MAX_CONNECTIONS @@TOTAL_READ TEXTPTR
@@PACK_RECEIVED @@TOTAL_WRITE
select a.*,(select top 1 name from username where id=a.id)
from 你的表 aselect a.*,(select top 1 name from userinfo where id=a.id)
from 你的表 a
多谢指点!
但我的要求仅用语句是实现不了的,
我要的是怎么能传递参数(这个参数为表名)
因为我想建立一个公用的涵数,而不是当使用不同的表时就得写一个对应的函数。