『只有函數和一些擴充預存程序可以從函數內執行』,
查了一下,EXEC 不能寫在函數,要麻就寫在SP上面。
所以先在SP上面建立一個發信程式
Create PROCEDURE [dbo].[sendMail]
@sp_email varchar(255),
@sp_subject nvarchar(255),
@sp_msg nvarchar(255)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
exec msdb.dbo.sp_send_dbmail
@profile_name='sendmail', --設定檔
@recipients=@sp_email, --收件者
@subject=@sp_subject, --主旨
@body=@sp_msg , --內文
--@query='select getdate()', --還可以下查詢式哦
--@file_attachments='C:\test.txt', --夾檔
--@attach_query_result_as_file=1, --把查詢的結果設為附件夾檔,不設的話就是在mail內容中看到囉
@body_format=TEXT, --使用text格式
@exclude_query_output = 1; --關閉 指定是否要在電子郵件中傳回查詢執行的輸出。 預設是0 會顯示
--@body_format=HTML' --也可以使用HTML格式
END
在SQL的使用方式
exec dbo.sendMail
@l_email='aabbcc@aabb.com',
@l_subject ='test',
@l_msg ='hello sp'
在PowerBuilder 9的使用方式
DECLARE sp_name PROCEDURE FOR sendMail
@sp_email = :l_id,
@sp_subject = :l_subject ,
@sp_msg = :l_msg;
EXECUTE sp_name;
close sp_name;
其實在PB上面也可以不需使用SP就能寄信,
但PB9要使用client端的預設送信軟體,而且不支援Outlook,
日前也發生過莫名其妙,就是有信送不出去、或是要加入聯絡人後才寄信的問題,
所以改寫成統一由資料庫發送
0 意見:
張貼留言