如何給OPENQUERY傳遞引數

2021-09-18 07:40:49 字數 2087 閱讀 7524

發現sql server裡,直接呼叫鏈結伺服器的函式是不可以的。

create function func_test

(    

@userid int

)returns table

asreturn

(select * from [192.168.0.252].[user].dbo.func_getdata(@userid))go

會報「不允許使用遠端錶值函式呼叫。」的錯誤

網上說可以使用openquery

但這個東西沒辦法直接傳引數,

create function func_test

(    

@userid int

)returns table

asreturn

(select * from openquery([192.168.0.252],'select * from [192.168.0.252].[user].dbo.func_getdata(' + cast(@userid as varchar(20)) + ')'))go

報錯訊息102,級別15,狀態1,過程func_test,第9 行

'+' 附近有語法錯誤。

不管怎麼調這個字串,都不行。語法其實沒錯誤,但一放到openquery就不行。

後來不用函式,改用儲存過程來呼叫才解決:

create procedure [dbo].[prd_test]

@userid int

asbegin

declare @myuserid varchar(20);

set @myuserid = cast(@userid as varchar(20));

declare @sql varchar(1000);

set @sql = 'select * from openquery([192.168.0.252],''select * from [user].dbo.func_getdata(' + @myuserid + ')'')';

exec(@sql);

end

發現sql server裡,直接呼叫鏈結伺服器的函式是不可以的。

create function func_test

(    

@userid int

)returns table

asreturn

(select * from [192.168.0.252].[user].dbo.func_getdata(@userid))go

會報「不允許使用遠端錶值函式呼叫。」的錯誤

網上說可以使用openquery

但這個東西沒辦法直接傳引數,

create function func_test

(    

@userid int

)returns table

asreturn

(select * from openquery([192.168.0.252],'select * from [192.168.0.252].[user].dbo.func_getdata(' + cast(@userid as varchar(20)) + ')'))go

報錯訊息102,級別15,狀態1,過程func_test,第9 行

'+' 附近有語法錯誤。

不管怎麼調這個字串,都不行。語法其實沒錯誤,但一放到openquery就不行。

後來不用函式,改用儲存過程來呼叫才解決:

create procedure [dbo].[prd_test]

@userid int

asbegin

declare @myuserid varchar(20);

set @myuserid = cast(@userid as varchar(20));

declare @sql varchar(1000);

set @sql = 'select * from openquery([192.168.0.252],''select * from [user].dbo.func_getdata(' + @myuserid + ')'')';

exec(@sql);

end

pthread create如何傳遞多個引數

分類 c語言 2012 06 19 08 44 98人閱讀收藏 舉報涉及多引數傳遞給執行緒的,都需要使用結構體將引數封裝後,將結構體指標傳給執行緒 定義乙個結構體 struct mypara 將這個結構體指標,作為void 形參的實際引數傳遞 struct mypara pstru pthread ...

pthread create如何傳遞多個引數

涉及多引數傳遞給執行緒的,都需要使用結構體將引數封裝後,將結構體指標傳給執行緒 定義乙個結構體 struct mypara 將這個結構體指標,作為void 形參的實際引數傳遞 struct mypara pstru pthread create ntid,null,thr fn,pstru 函式中需...

如何傳遞shell變數給aw

一 var 這種寫法大家無需改變用 括起awk程式的習慣,是老外常用的寫法.如 var test awk begin 這種寫法其實際是雙括號變為單括號的常量,傳遞給了awk.如果var中含空格,為了shell不把空格作為分格符,便應該如下使用 var this is a test awk begin...