2012-09-27 7 views
3

와 SQL 쿼리에 오류가? SQL Server 2008 R2에서이 작업을 실행하면 정상적으로 작동합니다.기능 사용

create FUNCTION [dbo].[fn_Split] (@sep nvarchar(10), @s nvarchar(4000)) 
RETURNS table 
AS 
    RETURN (
    WITH Pieces(pn, start, stop) AS (
    SELECT 1, 1, CHARINDEX(@sep, @s) 
    UNION ALL 
    SELECT pn + 1, stop + (datalength(@sep)/2), 
    CHARINDEX(@sep, @s, stop + (datalength(@sep)/2)) 
    FROM Pieces 
    WHERE stop > 0 
) 
SELECT pn, 
SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 4000 END) AS value 
FROM Pieces 
) 
; 

/****** Object: Table [dbo].[drillDowntable1] Script Date: 09/24/2012 18:43:32 ******/ 
USE [master] 

SET ANSI_NULLS ON 
; 
SET QUOTED_IDENTIFIER ON 
; 
SET ANSI_PADDING ON 
; 
CREATE TABLE [dbo].[drillDowntable1](
[id] [int] IDENTITY(1,1) NOT NULL, 
[name] [varchar](20) NULL, 
[json] [varchar](max) NULL, 
[isActive] [bit] NOT NULL 
) ON [PRIMARY] 

답변

5

자신의 배치에 물건을 넣으려면 GO이 필요합니다.

FROM Pieces 
) 
; 

GO -- < this is important 
/****** Object: Table [dbo].[drillDowntable1] Script Date: 09/24/2012 18:43:32 ******/ 
USE [master] 
+0

나는이 일을했지만이 있지만 나에게주는 오류 잘못된 구문이 근처 – Rahul

+1

@Rahul를 이동 한 후 잘 전 C# 어댑터는이 스크립트를 실행하는 데 사용하고 아무 생각이 없지만, 이해하지 않는 경우 GO 배치 분리 기호를 사용하면 배치를 올바르게 종료하는 방법을 보려면 해당 문서를 조사해야 할 수 있습니다. 각 오브젝트를 자체 배치로 제출해야 할 수도 있습니다. –

+0

@Rahul - C#의 조각에서 이것을 실행한다면,'GO'를 사용할 수 없지만'GO'를 사용했던 곳에서 여전히 쿼리를 분할하고 실행해야 할 수도 있습니다 각각 하나씩 별도의 배치로 만듭니다. –