Aitzaz Ahsan Ответов: 1

Как отформатировать SMS в MSSQL сервере


<pre lang="c#">USE [test]
GO
/****** Object:  StoredProcedure [dbo].[spSendSmsSQL]    Script Date: 02-07-2019 10:04:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[spSendSmsSQL] 
    --@Mobile varchar(20), 
    --@smstext as varchar(200)
AS
BEGIN
    declare @Mobile as varchar(200) 
    declare @smstext as varchar(200)
    DECLARE @iReq int, @hr int 
    DECLARE @sUrl AS varchar(500) 
    DECLARE @errorSource VARCHAR(8000)
    DECLARE @errorDescription VARCHAR(8000) 

    EXEC @hr = sp_OACreate 'Microsoft.XMLHTTP', @iReq OUT        

    print @hr        

    if @hr <> 0     
        RAISERROR('sp_OACreate Microsoft.XMLHTTP FAILED!', 16, 1) 

	set @Mobile=(select MobileNo from tbl_MobileNo)
	set @smstext='This is line 1.' + CHAR(10) + 'This is line 2.'
	
SET @sUrl='http://xxxxxxx/smpp/sendsms?username=xxx&password=xxx&to=#MobNo#&from=Al Ahli D C&text=#Msg#'
    SET @sUrl = REPLACE(@sUrl,'#MobNo#',@Mobile) 
    SET @sUrl = REPLACE(@sUrl,'#Msg#',@smstext) 

    -- sms code start 
    EXEC @hr = sp_OAMethod @iReq, 'Open', NULL, 'GET', @sUrl, true 

    IF @hr <> 0 
        RAISERROR('sp_OAMethod Open FAILED!', 16, 1) 

    EXEC @hr = sp_OAMethod @iReq, 'send' 

    SELECT @iReq

    IF @hr <> 0 
    BEGIN 
        EXEC sp_OAGetErrorInfo @iReq, @errorSource OUTPUT, @errorDescription OUTPUT

        SELECT 
            [Error Source] = @errorSource,
            [Description] = @errorDescription

        RAISERROR('sp_OAMethod Send FAILED!', 16, 1) 
    END 
    ELSE 
        EXEC @hr = sp_OAGetProperty @iReq 
END


Что я уже пробовал:

Я пытаюсь отправить SMS с сервера MSSQL с помощью SMS-шлюза. Но SMS идет в абзаце типа "это строка 1.' + CHAR(10) + 'это строка 2." я хочу сломать строку или новую строку для следующего слова, как я могу добиться от сервера MSSQL.
я хочу такую смс-ку
Это строка 1.
Это строка 2.

1 Ответов

Рейтинг:
1

Maciej Los

Я бы не рекомендовал форматировать SMS на сайте SQL Server по целому ряду причин. Вместо этого используйте пользовательский интерфейс.

Но, если вы хотите знать, почему CHAR(10) не работает с SELECT инструкция, прочтите эту:
c# - разрыв строки в T-sql (Char(13)) не работает - переполнение стека[^]
Как вставить разрыв строки в строку SQL Server VARCHAR/NVARCHAR - переполнение стека[^]