----------------------------------------------------------------------- --可以改成这样的处理declare @item varchar(20) set @item='小明'exec('select * from openquery(winy,''select * from gzcj.test where name='''''+@item+''''''')') ----------------------------------------------------------------------- --通过.
但请问在自定义函数里可以使用exec吗?
只能用exec 调用扩展存储过程,这在联机帮助上有明文规定
想法是在函数中执行 declare @item varchar(20) set @item='小明' exec('select * from openquery(winy,''select * from gzcj.test where name='''''+@item+''''''')') 返回table值的.按想法,现在的写法主要如下: ------------------------------------- create function CheckFilesInOracleByField(@item varchar(20),@field int) returns @re table (col1 varchar(20), col2 varchar(50), col3 varchar(20), col4 varchar(245) ) as begin if @field=1 begin EXECUTE('select * from openquery(winy,''select * from gzcj.test where name='''''+@item+''''''')') end return end ------------------------------------- 但联机里说明; EXECUTE 语句,该语句调用扩展存储过程。 但本人未写过扩展存储过程 现在求一想法: 可不可以把上面的东西. EXECUTE('select * from openquery(winy,''select * from gzcj.test where name='''''+@item+''''''')') 写到写过扩展存储过程里,再注册; 如果不能,怎解决: 通过变量,得到table的返回值;注意此操作过程要执行 EXECUTE('select * from openquery(winy,''select * from gzcj.test where name='''''+@item+''''''')')
------------------------------------- create function CheckFilesInOracleByField(@item varchar(20),@field int) returns @re table (col1 varchar(20), col2 varchar(50), col3 varchar(20), col4 varchar(245) ) as begin if @field=1 begin insert into @re-------------------------漏了这行; EXECUTE('select * from openquery(winy,''select * from gzcj.test where name='''''+@item+''''''')') end return end -------------------------------------晕了,insert into 本来就不能用exec,好晕. 看来得换想法了.
exec('select * from openquery(winy,''select * from gzcj.test where name='''+@item)
set @item='小明'exec('select * from openquery(winy,''select * from gzcj.test where name='''''+@item+''''''')')
set @item='小明'
exec ('select * from openquery(winy,''select * from gzcj.test where name='''+@item+')')
lsxaa(小李铅笔刀), leeboyan(★★宝宝★★) 语法上有点不通过.回复人: zjcxc(邹建) ( ) 信誉:439 2004-11-16 16:21:00 得分: 0
-----------------------------------------------------------------------
--可以改成这样的处理declare @item varchar(20)
set @item='小明'exec('select * from openquery(winy,''select * from gzcj.test where name='''''+@item+''''''')')
-----------------------------------------------------------------------
--通过.
declare @item varchar(20)
set @item='小明'
exec('select * from openquery(winy,''select * from gzcj.test where name='''''+@item+''''''')')
返回table值的.按想法,现在的写法主要如下:
-------------------------------------
create function CheckFilesInOracleByField(@item varchar(20),@field int)
returns @re table
(col1 varchar(20),
col2 varchar(50),
col3 varchar(20),
col4 varchar(245)
)
as
begin
if @field=1
begin
EXECUTE('select * from openquery(winy,''select * from gzcj.test where name='''''+@item+''''''')')
end
return
end
-------------------------------------
但联机里说明;
EXECUTE 语句,该语句调用扩展存储过程。
但本人未写过扩展存储过程
现在求一想法:
可不可以把上面的东西.
EXECUTE('select * from openquery(winy,''select * from gzcj.test where name='''''+@item+''''''')')
写到写过扩展存储过程里,再注册;
如果不能,怎解决:
通过变量,得到table的返回值;注意此操作过程要执行
EXECUTE('select * from openquery(winy,''select * from gzcj.test where name='''''+@item+''''''')')
create function CheckFilesInOracleByField(@item varchar(20),@field int)
returns @re table
(col1 varchar(20),
col2 varchar(50),
col3 varchar(20),
col4 varchar(245)
)
as
begin
if @field=1
begin
insert into @re-------------------------漏了这行;
EXECUTE('select * from openquery(winy,''select * from gzcj.test where name='''''+@item+''''''')')
end
return
end
-------------------------------------晕了,insert into 本来就不能用exec,好晕.
看来得换想法了.