مقاله : سوال در مورد Extended Stored Procedure

Iauksh
چطور میتوان ازDLL نوشته شده توسط ویژوال بیسیک بعنوان
Extended Stored Procedure استفاده کرد؟ [/quote]

Iauksh
تا جایی که من می دونم نمیشه اگه راهی یافتی به من هم یاد بده چون وی بی فقط اکتیوایکس دی ال ال درست می کنه.

در ضمن چه جوری میشه این تو انگلیسی تایپ کرد؟

Iauksh
یکی از امکانات جالب SQL Server امکان استفاده کردن از COM Object ها در دستورات SQL هست که میتونه استفاده های خیلی زیادی داشته باشه. این کار به دو صورت امکان پذیر هست, یک اضافه کردن dll به صورت یک extended stored procedue و دوم ایجاد یک instance از کلاس مورد نظر که روش ساده تری هست. در روش اول شما میتونید یک method از object رو به صورت یک stored procedure صدا بزنید که توضیحات کاملش در SQL Server Book Online هست یا از این لینک

http://archive.devx.com/free/mgznarch/vcdj/1998/mar98/sql1.asp

در روش دوم باید یک instance از object درست کرد و به متدهای اون دسترسی پیدا کرد. برای درست کردن instance باید از sp_OACreate stored procedure استفاده کرد و برای صدا زدن متدها یا برای دسترسی به property ها از stored procedure های زیر

sp_OAGetProperty
sp_OASetProperty
sp_OAMethod

برای مثال



DECLARE @Object int
DECLARE @Hresult int
DECLARE @Username varchar(255)
DECLARE @ErrorSource varchar (255)
DECLARE @ErrorDesc varchar (255)

--Create the object
EXEC @Hresult = sp_OACreate 'Word.Application', @Object OUT
--Call the object's property and return the value
EXEC @Hresult = sp_OAGetProperty @Object, 'UserName', @Username OUT
--Destroy the object
EXEC @Hresult = sp_OADestroy @Object

IF @Hresult <> 0
BEGIN
EXEC sp_OAGetErrorInfo @Object, @ErrorSource OUT, @ErrorDesc OUT
PRINT "Error Occurred Calling Object: " + @ErrorSource + " " + @ErrorDesc
RETURN
END

PRINT @Username

Iauksh
این سوال برای من هم مطرح بود . از اطلاعات شما متشکرم . اما من یک مشکل دیگر هم داشتم . یک dll که با دلفی نوشته بودم یک تابع با یک خروجی داشت که در یک app خروجی آن قابل دریافت بود اما در یک
extended procedure خروجی آن Null یود .

Iauksh

Iauksh
از اینکه وقت گذاشتید تشکر می کنم

_________________________________________
library testdll;

uses
SysUtils,
Classes;

{$R *.res}

function xp_a:string;
begin
{for test}
result:='10';
end;

exports xp_a;

end.
_________________________________________
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO

exec sp_addextendedproc N'xp_a', N'testdll.dll'
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
_________________________________________
declare @a varchar(10)
exec master..xp_a @a output
select @a as output_________________________________________

Iauksh

Iauksh

Iauksh

Iauksh

Iauksh
این لینک رو حتما ببینین:
http://www.howtodothings.com/viewarticle.aspx?article=223

Iauksh

Iauksh