2016-06-04 2 views
0

PHP 배열에서 데이터를 가져 와서 해당 데이터를 프로 시저로 전달하는 데 사용하는 SQL Server 2012 사용자 정의 테이블 형식이 있습니다. 때로는 웹 응용 프로그램에서 공백을 가져와 ltrim/rtrim을 사용하여 정리하고 싶습니다. 사용자 정의 테이블 유형 수준에서이 작업을 수행 할 수 있습니까? IE : 어디 parm1 varchar (10) 내가 어떻게 든 할 수 있어야한다고 선언 어디 거기에 무엇입니까? 나는 운이 없었어. 당신에게사용자 정의 테이블 형식의 SQL Server : ltrim

예 감사, 내 테이블 유형은 다음과 같습니다

CREATE TYPE LocationTableType AS TABLE 
(LocationName VARCHAR(50) 
, CostRate INT); 
GO 

나는 LocationName이 들어 오면, 그것은 LTRIM 수 있도록 변경하려면()/RTRIM() 여분의 공간을 취소합니다.

+0

단어로 설명하는 대신 몇 가지 예제를 게시 할 수 있습니까? – TheGameiswar

+0

LTRIM/RTRIM이 될 [INSERT/UPDATE trigger] (https://msdn.microsoft.com/en-us/library/ms189799.aspx)를 사용하십시오. 위치. 다른 방법으로는 [계산 된 열] (https://msdn.microsoft.com/en-us/library/ms188300.aspx)을 사용하는 것입니다. 'LocationNameDirty' 필드에 위치 이름을 저장하고'LocationName AS RTRIM (LTRIM (LocationNameDirty)) '계산 된 컬럼을 갖습니다. –

답변

1

보고 된 문제가 테이블 값 매개 변수의 속성 인 READONLY에 연결되어 있다고 가정합니다 (필수 속성). 즉, 테이블 반환 매개 변수의 행을 업데이트/삭제할 수 없으며 다른 행을 삽입 할 수 없습니다.

단기간에
CREATE PROCEDURE dbo.DoSomething 
@list dbo.LocationTableType READONLY -- <-- table table param have to be READONLY 
AS 
BEGIN 
    SELECT * FROM @list 
END 

용액

1) 저장 과정에서 다른 변수를 선언 할 수

2) 삽입이 변수에 데이터를 트리밍하고

3) 변경 모든 변수 - 매개 변수를 새 변수로 참조합니다.

ALTER PROCEDURE dbo.DoSomething 
@list dbo.LocationTableType READONLY 
AS 
BEGIN 
    DECLARE @listNoSpc dbo.LocationTableType -- New variable 
    INSERT @listNoSpc (LocationName, CostRate) -- Inserting trimmed data 
    SELECT LTRIM(l.LocationName), l.CostRate 
    FROM @list l 

    SELECT * FROM @listNoSpc     -- Update references from @list to @listNoSpc 
END 
GO 

영구 솔루션은 SQL 서버에 데이터를 전송하기 전에 그 공백을 제거하기 위해 웹 애플리케이션 (PHP)를 업데이트 할 수 있어야합니다.