QA@IT
«質問へ戻る

コードブロックの書き方の修正。C#は関係ないようなのでタグの削除

5599
本文
 以下、ストアドの構文です。
 
 ****↓赤い波線の出るストアド↓****
+```sql
 USE [xdb]
 GO
 /****** Object:  StoredProcedure [dbo].[PR_TMユーザ抽出]    Script Date: 2015/10/12 18:54:04 ******/
 
 	RETURN
 END
+```
 ****↑ここまで↑****
 
 ****↓赤い波線の出ないストアド↓****
+```sql
 USE [xdb]
 GO
 /****** Object:  StoredProcedure [dbo].[PR_TM市区町村抽出]    Script Date: 2015/10/12 19:14:06 ******/
 	END CATCH 
 RETURN
 END
-
+```
 ****↑ここまで↑****
 
タグ

SQLServer2014のストアドプロシージャの構文について

はじめまして。
SQLServer2014でパラメータ付きのストアドプロシージャを作っています。
パラメータ付きのストアドプロシージャを作ると、ほとんどのストアドで、
ストアド名の下部に赤い波線が出てしまい、「オブジェクト名~~が無効です」となってしまいます。
(パラメータの無いストアドでは、このような現象は起きません)
赤い波線が出ている状態でも、「クエリが正常に実行されました」とメッセージが出ます。
ManagementStudio上で実行すると、
実行はされるのですが、
実行したクエリの画面で、ストアド名の下にまた赤波線が出て、
「ストアドプロシージャ'****'が見つかりませんでした」となります。
それが原因ではないのかもしれませんが、プログラムから実行すると、「オブジェクト参照がオブジェクト インスタンスに設定されていません。」と、エラーになってしまいます。
SQLServer2005など以前のバージョンのSQLServerと比べて、ストアドの構文が変わってしまったとかがあるのでしょうか?

慣れていないので、質問の仕方が悪いようでしたら、ご容赦下さい。
よろしくお願いします。

(質問を編集しました。)

以下、ストアドの構文です。

****↓赤い波線の出るストアド↓****

USE [xdb]
GO
/****** Object:  StoredProcedure [dbo].[PR_TMユーザ抽出]    Script Date: 2015/10/12 18:54:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[PR_TMユーザ抽出]

    @intユーザID INT = NULL

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    DECLARE @QUERY NVARCHAR(MAX)

    SET @QUERY = 'SELECT * FROM VMユーザ WHERE intユーザID = ' + CONVERT(NVARCHAR,@intユーザID)

    BEGIN TRY
        EXEC (@QUERY)
    END TRY
    BEGIN CATCH
        DECLARE @EX NVARCHAR(MAX)
        SET @EX = 'クエリエラー:' + @QUERY
        RAISERROR(@EX , 16, 2)
        RETURN
    END CATCH

    RETURN
END

****↑ここまで↑****

****↓赤い波線の出ないストアド↓****

USE [xdb]
GO
/****** Object:  StoredProcedure [dbo].[PR_TM市区町村抽出]    Script Date: 2015/10/12 19:14:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[PR_TM市区町村抽出]

    @int都道府県コード INT = NULL

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    DECLARE @QUERY NVARCHAR(MAX)

    SET @QUERY = 'SELECT int都道府県コード,int市区町村コード,str市区町村名,int削除フラグ FROM M_市区町村 '
    SET @QUERY = @QUERY + 'WHERE int削除フラグ = 0 ' 
    IF @int都道府県コード IS NOT NULL
        SET @QUERY = @QUERY + 'AND int都道府県コード = ' + CONVERT(NVARCHAR,@int都道府県コード) 
    SET @QUERY = @QUERY +  ' ORDER BY int市区町村コード ASC '

    BEGIN TRY
        EXEC (@QUERY)
    END TRY
    BEGIN CATCH
        DECLARE @EX NVARCHAR(MAX)
        SET @EX = 'クエリエラー' + @QUERY
        RAISERROR(@EX,16,2)
        RETURN
    END CATCH 
RETURN
END

****↑ここまで↑****

はじめまして。
SQLServer2014でパラメータ付きのストアドプロシージャを作っています。
パラメータ付きのストアドプロシージャを作ると、ほとんどのストアドで、
ストアド名の下部に赤い波線が出てしまい、「オブジェクト名~~が無効です」となってしまいます。
(パラメータの無いストアドでは、このような現象は起きません)
赤い波線が出ている状態でも、「クエリが正常に実行されました」とメッセージが出ます。
ManagementStudio上で実行すると、
実行はされるのですが、
実行したクエリの画面で、ストアド名の下にまた赤波線が出て、
「ストアドプロシージャ'****'が見つかりませんでした」となります。
それが原因ではないのかもしれませんが、プログラムから実行すると、「オブジェクト参照がオブジェクト インスタンスに設定されていません。」と、エラーになってしまいます。
SQLServer2005など以前のバージョンのSQLServerと比べて、ストアドの構文が変わってしまったとかがあるのでしょうか?

慣れていないので、質問の仕方が悪いようでしたら、ご容赦下さい。
よろしくお願いします。

(質問を編集しました。)

以下、ストアドの構文です。

****↓赤い波線の出るストアド↓****
```sql
USE [xdb]
GO
/****** Object:  StoredProcedure [dbo].[PR_TMユーザ抽出]    Script Date: 2015/10/12 18:54:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[PR_TMユーザ抽出]

	@intユーザID INT = NULL

AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	DECLARE @QUERY NVARCHAR(MAX)

	SET @QUERY = 'SELECT * FROM VMユーザ WHERE intユーザID = ' + CONVERT(NVARCHAR,@intユーザID)

	BEGIN TRY
		EXEC (@QUERY)
	END TRY
	BEGIN CATCH
		DECLARE @EX NVARCHAR(MAX)
		SET @EX = 'クエリエラー:' + @QUERY
		RAISERROR(@EX , 16, 2)
		RETURN
	END CATCH

	RETURN
END
```
****↑ここまで↑****

****↓赤い波線の出ないストアド↓****
```sql
USE [xdb]
GO
/****** Object:  StoredProcedure [dbo].[PR_TM市区町村抽出]    Script Date: 2015/10/12 19:14:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[PR_TM市区町村抽出]

	@int都道府県コード INT = NULL

AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    DECLARE @QUERY NVARCHAR(MAX)
	
	SET @QUERY = 'SELECT int都道府県コード,int市区町村コード,str市区町村名,int削除フラグ FROM M_市区町村 '
	SET @QUERY = @QUERY + 'WHERE int削除フラグ = 0 ' 
	IF @int都道府県コード IS NOT NULL
		SET @QUERY = @QUERY + 'AND int都道府県コード = ' + CONVERT(NVARCHAR,@int都道府県コード) 
	SET @QUERY = @QUERY +  ' ORDER BY int市区町村コード ASC '

	BEGIN TRY
		EXEC (@QUERY)
	END TRY
	BEGIN CATCH
		DECLARE @EX NVARCHAR(MAX)
		SET @EX = 'クエリエラー' + @QUERY
		RAISERROR(@EX,16,2)
		RETURN
	END CATCH 
RETURN
END
```
****↑ここまで↑****

4
本文
 		RAISERROR(@EX,16,2)
 		RETURN
 	END CATCH 
-
+RETURN
 END
 
 ****↑ここまで↑****

SQLServer2014のストアドプロシージャの構文について

はじめまして。
SQLServer2014でパラメータ付きのストアドプロシージャを作っています。
パラメータ付きのストアドプロシージャを作ると、ほとんどのストアドで、
ストアド名の下部に赤い波線が出てしまい、「オブジェクト名~~が無効です」となってしまいます。
(パラメータの無いストアドでは、このような現象は起きません)
赤い波線が出ている状態でも、「クエリが正常に実行されました」とメッセージが出ます。
ManagementStudio上で実行すると、
実行はされるのですが、
実行したクエリの画面で、ストアド名の下にまた赤波線が出て、
「ストアドプロシージャ'****'が見つかりませんでした」となります。
それが原因ではないのかもしれませんが、プログラムから実行すると、「オブジェクト参照がオブジェクト インスタンスに設定されていません。」と、エラーになってしまいます。
SQLServer2005など以前のバージョンのSQLServerと比べて、ストアドの構文が変わってしまったとかがあるのでしょうか?

慣れていないので、質問の仕方が悪いようでしたら、ご容赦下さい。
よろしくお願いします。

(質問を編集しました。)

以下、ストアドの構文です。

****↓赤い波線の出るストアド↓****
USE [xdb]
GO
/****** Object: StoredProcedure [dbo].[PR_TMユーザ抽出] Script Date: 2015/10/12 18:54:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
ALTER PROCEDURE [dbo].[PR_TMユーザ抽出]

@intユーザID INT = NULL

AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

DECLARE @QUERY NVARCHAR(MAX)

SET @QUERY = 'SELECT * FROM VMユーザ WHERE intユーザID = ' + CONVERT(NVARCHAR,@intユーザID)

BEGIN TRY
    EXEC (@QUERY)
END TRY
BEGIN CATCH
    DECLARE @EX NVARCHAR(MAX)
    SET @EX = 'クエリエラー:' + @QUERY
    RAISERROR(@EX , 16, 2)
    RETURN
END CATCH

RETURN

END
****↑ここまで↑****

****↓赤い波線の出ないストアド↓****
USE [xdb]
GO
/****** Object: StoredProcedure [dbo].[PR_TM市区町村抽出] Script Date: 2015/10/12 19:14:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
ALTER PROCEDURE [dbo].[PR_TM市区町村抽出]

@int都道府県コード INT = NULL

AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

DECLARE @QUERY NVARCHAR(MAX)

SET @QUERY = 'SELECT int都道府県コード,int市区町村コード,str市区町村名,int削除フラグ FROM M_市区町村 '
SET @QUERY = @QUERY + 'WHERE int削除フラグ = 0 ' 
IF @int都道府県コード IS NOT NULL
    SET @QUERY = @QUERY + 'AND int都道府県コード = ' + CONVERT(NVARCHAR,@int都道府県コード) 
SET @QUERY = @QUERY +  ' ORDER BY int市区町村コード ASC '

BEGIN TRY
    EXEC (@QUERY)
END TRY
BEGIN CATCH
    DECLARE @EX NVARCHAR(MAX)
    SET @EX = 'クエリエラー' + @QUERY
    RAISERROR(@EX,16,2)
    RETURN
END CATCH 

RETURN
END

****↑ここまで↑****

はじめまして。
SQLServer2014でパラメータ付きのストアドプロシージャを作っています。
パラメータ付きのストアドプロシージャを作ると、ほとんどのストアドで、
ストアド名の下部に赤い波線が出てしまい、「オブジェクト名~~が無効です」となってしまいます。
(パラメータの無いストアドでは、このような現象は起きません)
赤い波線が出ている状態でも、「クエリが正常に実行されました」とメッセージが出ます。
ManagementStudio上で実行すると、
実行はされるのですが、
実行したクエリの画面で、ストアド名の下にまた赤波線が出て、
「ストアドプロシージャ'****'が見つかりませんでした」となります。
それが原因ではないのかもしれませんが、プログラムから実行すると、「オブジェクト参照がオブジェクト インスタンスに設定されていません。」と、エラーになってしまいます。
SQLServer2005など以前のバージョンのSQLServerと比べて、ストアドの構文が変わってしまったとかがあるのでしょうか?

慣れていないので、質問の仕方が悪いようでしたら、ご容赦下さい。
よろしくお願いします。

(質問を編集しました。)

以下、ストアドの構文です。

****↓赤い波線の出るストアド↓****
USE [xdb]
GO
/****** Object:  StoredProcedure [dbo].[PR_TMユーザ抽出]    Script Date: 2015/10/12 18:54:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[PR_TMユーザ抽出]

	@intユーザID INT = NULL

AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	DECLARE @QUERY NVARCHAR(MAX)

	SET @QUERY = 'SELECT * FROM VMユーザ WHERE intユーザID = ' + CONVERT(NVARCHAR,@intユーザID)

	BEGIN TRY
		EXEC (@QUERY)
	END TRY
	BEGIN CATCH
		DECLARE @EX NVARCHAR(MAX)
		SET @EX = 'クエリエラー:' + @QUERY
		RAISERROR(@EX , 16, 2)
		RETURN
	END CATCH

	RETURN
END
****↑ここまで↑****

****↓赤い波線の出ないストアド↓****
USE [xdb]
GO
/****** Object:  StoredProcedure [dbo].[PR_TM市区町村抽出]    Script Date: 2015/10/12 19:14:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[PR_TM市区町村抽出]

	@int都道府県コード INT = NULL

AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    DECLARE @QUERY NVARCHAR(MAX)
	
	SET @QUERY = 'SELECT int都道府県コード,int市区町村コード,str市区町村名,int削除フラグ FROM M_市区町村 '
	SET @QUERY = @QUERY + 'WHERE int削除フラグ = 0 ' 
	IF @int都道府県コード IS NOT NULL
		SET @QUERY = @QUERY + 'AND int都道府県コード = ' + CONVERT(NVARCHAR,@int都道府県コード) 
	SET @QUERY = @QUERY +  ' ORDER BY int市区町村コード ASC '

	BEGIN TRY
		EXEC (@QUERY)
	END TRY
	BEGIN CATCH
		DECLARE @EX NVARCHAR(MAX)
		SET @EX = 'クエリエラー' + @QUERY
		RAISERROR(@EX,16,2)
		RETURN
	END CATCH 
RETURN
END

****↑ここまで↑****

4
本文
 はじめまして。
 SQLServer2014でパラメータ付きのストアドプロシージャを作っています。
-パラメータ付きのストアドプロシージャを作ると、
+パラメータ付きのストアドプロシージャを作ると、ほとんどのストアドで、
 ストアド名の下部に赤い波線が出てしまい、「オブジェクト名~~が無効です」となってしまいます。
 (パラメータの無いストアドでは、このような現象は起きません)
 赤い波線が出ている状態でも、「クエリが正常に実行されました」とメッセージが出ます。
 実行したクエリの画面で、ストアド名の下にまた赤波線が出て、
 「ストアドプロシージャ'****'が見つかりませんでした」となります。
 それが原因ではないのかもしれませんが、プログラムから実行すると、「オブジェクト参照がオブジェクト インスタンスに設定されていません。」と、エラーになってしまいます。
-SQLServer2005など以前のバージョンのSQLServerと比べて、ストアドの構文とかが、変わってしまったのでしょうか?
+SQLServer2005など以前のバージョンのSQLServerと比べて、ストアドの構文が変わってしまったとかがあるのでしょうか?
 
 慣れていないので、質問の仕方が悪いようでしたら、ご容赦下さい。
 よろしくお願いします。
 
 以下、ストアドの構文です。
 
+****↓赤い波線の出るストアド↓****
 USE [xdb]
 GO
 /****** Object:  StoredProcedure [dbo].[PR_TMユーザ抽出]    Script Date: 2015/10/12 18:54:04 ******/
 
 	RETURN
 END
+****↑ここまで↑****
+
+****↓赤い波線の出ないストアド↓****
+USE [xdb]
+GO
+/****** Object:  StoredProcedure [dbo].[PR_TM市区町村抽出]    Script Date: 2015/10/12 19:14:06 ******/
+SET ANSI_NULLS ON
+GO
+SET QUOTED_IDENTIFIER ON
+GO
+-- =============================================
+-- Author:		<Author,,Name>
+-- Create date: <Create Date,,>
+-- Description:	<Description,,>
+-- =============================================
+ALTER PROCEDURE [dbo].[PR_TM市区町村抽出]
+
+	@int都道府県コード INT = NULL
+
+AS
+BEGIN
+	-- SET NOCOUNT ON added to prevent extra result sets from
+	-- interfering with SELECT statements.
+	SET NOCOUNT ON;
+
+    DECLARE @QUERY NVARCHAR(MAX)
+	
+	SET @QUERY = 'SELECT int都道府県コード,int市区町村コード,str市区町村名,int削除フラグ FROM M_市区町村 '
+	SET @QUERY = @QUERY + 'WHERE int削除フラグ = 0 ' 
+	IF @int都道府県コード IS NOT NULL
+		SET @QUERY = @QUERY + 'AND int都道府県コード = ' + CONVERT(NVARCHAR,@int都道府県コード) 
+	SET @QUERY = @QUERY +  ' ORDER BY int市区町村コード ASC '
+
+	BEGIN TRY
+		EXEC (@QUERY)
+	END TRY
+	BEGIN CATCH
+		DECLARE @EX NVARCHAR(MAX)
+		SET @EX = 'クエリエラー' + @QUERY
+		RAISERROR(@EX,16,2)
+		RETURN
+	END CATCH 
+
+END
+
+****↑ここまで↑****
 

SQLServer2014のストアドプロシージャの構文について

はじめまして。
SQLServer2014でパラメータ付きのストアドプロシージャを作っています。
パラメータ付きのストアドプロシージャを作ると、ほとんどのストアドで、
ストアド名の下部に赤い波線が出てしまい、「オブジェクト名~~が無効です」となってしまいます。
(パラメータの無いストアドでは、このような現象は起きません)
赤い波線が出ている状態でも、「クエリが正常に実行されました」とメッセージが出ます。
ManagementStudio上で実行すると、
実行はされるのですが、
実行したクエリの画面で、ストアド名の下にまた赤波線が出て、
「ストアドプロシージャ'****'が見つかりませんでした」となります。
それが原因ではないのかもしれませんが、プログラムから実行すると、「オブジェクト参照がオブジェクト インスタンスに設定されていません。」と、エラーになってしまいます。
SQLServer2005など以前のバージョンのSQLServerと比べて、ストアドの構文が変わってしまったとかがあるのでしょうか?

慣れていないので、質問の仕方が悪いようでしたら、ご容赦下さい。
よろしくお願いします。

(質問を編集しました。)

以下、ストアドの構文です。

****↓赤い波線の出るストアド↓****
USE [xdb]
GO
/****** Object: StoredProcedure [dbo].[PR_TMユーザ抽出] Script Date: 2015/10/12 18:54:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
ALTER PROCEDURE [dbo].[PR_TMユーザ抽出]

@intユーザID INT = NULL

AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

DECLARE @QUERY NVARCHAR(MAX)

SET @QUERY = 'SELECT * FROM VMユーザ WHERE intユーザID = ' + CONVERT(NVARCHAR,@intユーザID)

BEGIN TRY
    EXEC (@QUERY)
END TRY
BEGIN CATCH
    DECLARE @EX NVARCHAR(MAX)
    SET @EX = 'クエリエラー:' + @QUERY
    RAISERROR(@EX , 16, 2)
    RETURN
END CATCH

RETURN

END
****↑ここまで↑****

****↓赤い波線の出ないストアド↓****
USE [xdb]
GO
/****** Object: StoredProcedure [dbo].[PR_TM市区町村抽出] Script Date: 2015/10/12 19:14:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
ALTER PROCEDURE [dbo].[PR_TM市区町村抽出]

@int都道府県コード INT = NULL

AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

DECLARE @QUERY NVARCHAR(MAX)

SET @QUERY = 'SELECT int都道府県コード,int市区町村コード,str市区町村名,int削除フラグ FROM M_市区町村 '
SET @QUERY = @QUERY + 'WHERE int削除フラグ = 0 ' 
IF @int都道府県コード IS NOT NULL
    SET @QUERY = @QUERY + 'AND int都道府県コード = ' + CONVERT(NVARCHAR,@int都道府県コード) 
SET @QUERY = @QUERY +  ' ORDER BY int市区町村コード ASC '

BEGIN TRY
    EXEC (@QUERY)
END TRY
BEGIN CATCH
    DECLARE @EX NVARCHAR(MAX)
    SET @EX = 'クエリエラー' + @QUERY
    RAISERROR(@EX,16,2)
    RETURN
END CATCH 

END

****↑ここまで↑****

はじめまして。
SQLServer2014でパラメータ付きのストアドプロシージャを作っています。
パラメータ付きのストアドプロシージャを作ると、ほとんどのストアドで、
ストアド名の下部に赤い波線が出てしまい、「オブジェクト名~~が無効です」となってしまいます。
(パラメータの無いストアドでは、このような現象は起きません)
赤い波線が出ている状態でも、「クエリが正常に実行されました」とメッセージが出ます。
ManagementStudio上で実行すると、
実行はされるのですが、
実行したクエリの画面で、ストアド名の下にまた赤波線が出て、
「ストアドプロシージャ'****'が見つかりませんでした」となります。
それが原因ではないのかもしれませんが、プログラムから実行すると、「オブジェクト参照がオブジェクト インスタンスに設定されていません。」と、エラーになってしまいます。
SQLServer2005など以前のバージョンのSQLServerと比べて、ストアドの構文が変わってしまったとかがあるのでしょうか?

慣れていないので、質問の仕方が悪いようでしたら、ご容赦下さい。
よろしくお願いします。

(質問を編集しました。)

以下、ストアドの構文です。

****↓赤い波線の出るストアド↓****
USE [xdb]
GO
/****** Object:  StoredProcedure [dbo].[PR_TMユーザ抽出]    Script Date: 2015/10/12 18:54:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[PR_TMユーザ抽出]

	@intユーザID INT = NULL

AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	DECLARE @QUERY NVARCHAR(MAX)

	SET @QUERY = 'SELECT * FROM VMユーザ WHERE intユーザID = ' + CONVERT(NVARCHAR,@intユーザID)

	BEGIN TRY
		EXEC (@QUERY)
	END TRY
	BEGIN CATCH
		DECLARE @EX NVARCHAR(MAX)
		SET @EX = 'クエリエラー:' + @QUERY
		RAISERROR(@EX , 16, 2)
		RETURN
	END CATCH

	RETURN
END
****↑ここまで↑****

****↓赤い波線の出ないストアド↓****
USE [xdb]
GO
/****** Object:  StoredProcedure [dbo].[PR_TM市区町村抽出]    Script Date: 2015/10/12 19:14:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[PR_TM市区町村抽出]

	@int都道府県コード INT = NULL

AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    DECLARE @QUERY NVARCHAR(MAX)
	
	SET @QUERY = 'SELECT int都道府県コード,int市区町村コード,str市区町村名,int削除フラグ FROM M_市区町村 '
	SET @QUERY = @QUERY + 'WHERE int削除フラグ = 0 ' 
	IF @int都道府県コード IS NOT NULL
		SET @QUERY = @QUERY + 'AND int都道府県コード = ' + CONVERT(NVARCHAR,@int都道府県コード) 
	SET @QUERY = @QUERY +  ' ORDER BY int市区町村コード ASC '

	BEGIN TRY
		EXEC (@QUERY)
	END TRY
	BEGIN CATCH
		DECLARE @EX NVARCHAR(MAX)
		SET @EX = 'クエリエラー' + @QUERY
		RAISERROR(@EX,16,2)
		RETURN
	END CATCH 

END

****↑ここまで↑****

4
本文
 パラメータ付きのストアドプロシージャを作ると、
 ストアド名の下部に赤い波線が出てしまい、「オブジェクト名~~が無効です」となってしまいます。
 (パラメータの無いストアドでは、このような現象は起きません)
-赤い波線が出ている状態でも、「クエリが正常に実行されました」とメッセージが出て、
-ManagementStudio上では、ちゃんと実行できます。
-でも、それが原因ではないのかもしれませんが、プログラムから実行すると、「オブジェクト参照がオブジェクト インスタンスに設定されていません。」と、エラーになってしまいます。
+赤い波線が出ている状態でも、「クエリが正常に実行されました」とメッセージが出ます。
+ManagementStudio上で実行すると、
+実行はされるのですが、
+実行したクエリの画面で、ストアド名の下にまた赤波線が出て、
+「ストアドプロシージャ'****'が見つかりませんでした」となります。
+それが原因ではないのかもしれませんが、プログラムから実行すると、「オブジェクト参照がオブジェクト インスタンスに設定されていません。」と、エラーになってしまいます。
 SQLServer2005など以前のバージョンのSQLServerと比べて、ストアドの構文とかが、変わってしまったのでしょうか?
 
 慣れていないので、質問の仕方が悪いようでしたら、ご容赦下さい。
 よろしくお願いします。
 
+(質問を編集しました。)
+
 以下、ストアドの構文です。
 
-
 USE [xdb]
 GO
-/****** Object:  StoredProcedure [dbo].[PR_TMユーザ]    Script Date: 2015/10/12 15:35:07 ******/
+/****** Object:  StoredProcedure [dbo].[PR_TMユーザ抽出]    Script Date: 2015/10/12 18:54:04 ******/
 SET ANSI_NULLS ON
 GO
 SET QUOTED_IDENTIFIER ON
 -- Create date: <Create Date,,>
 -- Description:	<Description,,>
 -- =============================================
-ALTER PROCEDURE [dbo].[PR_TMユーザ]
-	@MODE	CHAR(1)=NULL,
-	@intユーザID	int=0,
-	@int性別コード	int=0,
-	@int削除フラグ	int=0,
-	@dteアクセス時間	datetime=NULL,
-	@strアクセスIPV4	nvarchar(15)=NULL,
-	@strアクセスIPV6	nvarchar(39)=NULL,
-	@strアクセスホスト	nvarchar(255)=NULL,
-	@strアクセスブラウザ	nvarchar(30)=NULL,
-	@CreateUserID	int=0,
-	@CreateDatetime	datetime=NULL,
-	@CreateIPV4	nvarchar(15)=NULL,
-	@CreateIPV6	nvarchar(39)=NULL,
-	@CreateIPHost	nvarchar(255)=NULL,
-	@UpdateUserID	int=0,
-	@UpdateDatetime	datetime=NULL,
-	@UpdateIPV4	nvarchar(15)=NULL,
-	@UpdateIPV6	nvarchar(39)=NULL,
-	@UpdateIPHost	nvarchar(255)=NULL
+ALTER PROCEDURE [dbo].[PR_TMユーザ抽出]
+
+	@intユーザID INT = NULL
+
 AS
 BEGIN
 	-- SET NOCOUNT ON added to prevent extra result sets from
 	-- interfering with SELECT statements.
-SET NOCOUNT ON;
+	SET NOCOUNT ON;
 
-DECLARE @intTRANCNT INT, @intERRORCODE INT, @intCOUNT INT, @Severity INT, @Error_Msg VARCHAR(255)
+	DECLARE @QUERY NVARCHAR(MAX)
 
-SET @intERRORCODE=0
-BEGIN TRY
-	SET @intTRANCNT=@@TRANCOUNT
-	IF @intTRANCNT=0
-		BEGIN TRANSACTION
-	IF @MODE='1'
-	BEGIN
-		SELECT @intユーザID = ISNULL(MAX(intユーザID),0) + 1
-		FROM M_ユーザ
+	SET @QUERY = 'SELECT * FROM VMユーザ WHERE intユーザID = ' + CONVERT(NVARCHAR,@intユーザID)
 
-		INSERT INTO [M_ユーザ]
-		(
-			[intユーザID],
-			[int性別コード],
-			[int削除フラグ],
-			[dteアクセス時間],
-			[strアクセスIPV4],
-			[strアクセスIPV6],
-			[strアクセスホスト],
-			[strアクセスブラウザ],
-			[CreateUserID],
-			[CreateDatetime],
-			[CreateIPV4],
-			[CreateIPV6],
-			[CreateIPHost],
-			[UpdateUserID],
-			[UpdateDatetime],
-			[UpdateIPV4],
-			[UpdateIPV6],
-			[UpdateIPHost]
-		) VALUES (
-			@intユーザID,
-			@int性別コード,
-			@int削除フラグ,
-			@dteアクセス時間,
-			@strアクセスIPV4,
-			@strアクセスIPV6,
-			@strアクセスホスト,
-			@strアクセスブラウザ,
-			@intユーザID,
-			@CreateDatetime,
-			@CreateIPV4,
-			@CreateIPV6,
-			@CreateIPHost,
-			@intユーザID,
-			@UpdateDatetime,
-			@UpdateIPV4,
-			@UpdateIPV6,
-			@UpdateIPHost
-		)
-	END
-	IF @MODE='2'
-	BEGIN
-		UPDATE [M_ユーザ]
-		SET
-			[int性別コード]=@int性別コード,
-			[int削除フラグ]=@int削除フラグ,
-			[dteアクセス時間]=@dteアクセス時間,
-			[strアクセスIPV4]=@strアクセスIPV4,
-			[strアクセスIPV6]=@strアクセスIPV6,
-			[strアクセスホスト]=@strアクセスホスト,
-			[strアクセスブラウザ]=@strアクセスブラウザ,
-			[CreateUserID]=@CreateUserID,
-			[CreateDatetime]=@CreateDatetime,
-			[CreateIPV4]=@CreateIPV4,
-			[CreateIPV6]=@CreateIPV6,
-			[CreateIPHost]=@CreateIPHost,
-			[UpdateUserID]=@UpdateUserID,
-			[UpdateDatetime]=@UpdateDatetime,
-			[UpdateIPV4]=@UpdateIPV4,
-			[UpdateIPV6]=@UpdateIPV6,
-			[UpdateIPHost]=@UpdateIPHost
-		WHERE
-			[intユーザID]=@intユーザID
-		SET @intCOUNT=@@ROWCOUNT
-		IF @intCOUNT=0 RAISERROR(50001,11,1)
-	END
-	-- トランザクションのコミット
-	IF @@TRANCOUNT>@intTRANCNT
-		COMMIT TRANSACTION
-END TRY
-BEGIN CATCH
-	SET @Severity = ERROR_SEVERITY()
-	SET @Error_Msg = ERROR_MESSAGE()
-	-- トランザクションのロールバック
-	IF XACT_STATE() = -1	-- アクティブなトランザクションは存在するがコミットできない
-	BEGIN
-		IF @@TRANCOUNT>@intTRANCNT
-			ROLLBACK TRANSACTION
-	END
-	--ELSE IF XACT_STATE() = 0	-- アクティブなトランザクションは存在しない
-	ELSE IF XACT_STATE() = 1	-- アクティブなトランザクションは存在する
-	BEGIN
-		IF @@TRANCOUNT>@intTRANCNT
-			ROLLBACK TRANSACTION
-	END
-	RAISERROR (@Error_Msg, @Severity, 2)
-END CATCH
-RETURN @intユーザID
+	BEGIN TRY
+		EXEC (@QUERY)
+	END TRY
+	BEGIN CATCH
+		DECLARE @EX NVARCHAR(MAX)
+		SET @EX = 'クエリエラー:' + @QUERY
+		RAISERROR(@EX , 16, 2)
+		RETURN
+	END CATCH
 
+	RETURN
 END
+

SQLServer2014のストアドプロシージャの構文について

はじめまして。
SQLServer2014でパラメータ付きのストアドプロシージャを作っています。
パラメータ付きのストアドプロシージャを作ると、
ストアド名の下部に赤い波線が出てしまい、「オブジェクト名~~が無効です」となってしまいます。
(パラメータの無いストアドでは、このような現象は起きません)
赤い波線が出ている状態でも、「クエリが正常に実行されました」とメッセージが出ます。
ManagementStudio上で実行すると、
実行はされるのですが、
実行したクエリの画面で、ストアド名の下にまた赤波線が出て、
「ストアドプロシージャ'****'が見つかりませんでした」となります。
それが原因ではないのかもしれませんが、プログラムから実行すると、「オブジェクト参照がオブジェクト インスタンスに設定されていません。」と、エラーになってしまいます。
SQLServer2005など以前のバージョンのSQLServerと比べて、ストアドの構文とかが、変わってしまったのでしょうか?

慣れていないので、質問の仕方が悪いようでしたら、ご容赦下さい。
よろしくお願いします。

(質問を編集しました。)

以下、ストアドの構文です。

USE [xdb]
GO
/****** Object: StoredProcedure [dbo].[PR_TMユーザ抽出] Script Date: 2015/10/12 18:54:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
ALTER PROCEDURE [dbo].[PR_TMユーザ抽出]

@intユーザID INT = NULL

AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

DECLARE @QUERY NVARCHAR(MAX)

SET @QUERY = 'SELECT * FROM VMユーザ WHERE intユーザID = ' + CONVERT(NVARCHAR,@intユーザID)

BEGIN TRY
    EXEC (@QUERY)
END TRY
BEGIN CATCH
    DECLARE @EX NVARCHAR(MAX)
    SET @EX = 'クエリエラー:' + @QUERY
    RAISERROR(@EX , 16, 2)
    RETURN
END CATCH

RETURN

END

はじめまして。
SQLServer2014でパラメータ付きのストアドプロシージャを作っています。
パラメータ付きのストアドプロシージャを作ると、
ストアド名の下部に赤い波線が出てしまい、「オブジェクト名~~が無効です」となってしまいます。
(パラメータの無いストアドでは、このような現象は起きません)
赤い波線が出ている状態でも、「クエリが正常に実行されました」とメッセージが出ます。
ManagementStudio上で実行すると、
実行はされるのですが、
実行したクエリの画面で、ストアド名の下にまた赤波線が出て、
「ストアドプロシージャ'****'が見つかりませんでした」となります。
それが原因ではないのかもしれませんが、プログラムから実行すると、「オブジェクト参照がオブジェクト インスタンスに設定されていません。」と、エラーになってしまいます。
SQLServer2005など以前のバージョンのSQLServerと比べて、ストアドの構文とかが、変わってしまったのでしょうか?

慣れていないので、質問の仕方が悪いようでしたら、ご容赦下さい。
よろしくお願いします。

(質問を編集しました。)

以下、ストアドの構文です。

USE [xdb]
GO
/****** Object:  StoredProcedure [dbo].[PR_TMユーザ抽出]    Script Date: 2015/10/12 18:54:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[PR_TMユーザ抽出]

	@intユーザID INT = NULL

AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	DECLARE @QUERY NVARCHAR(MAX)

	SET @QUERY = 'SELECT * FROM VMユーザ WHERE intユーザID = ' + CONVERT(NVARCHAR,@intユーザID)

	BEGIN TRY
		EXEC (@QUERY)
	END TRY
	BEGIN CATCH
		DECLARE @EX NVARCHAR(MAX)
		SET @EX = 'クエリエラー:' + @QUERY
		RAISERROR(@EX , 16, 2)
		RETURN
	END CATCH

	RETURN
END

4
タグ

SQLServer2014のストアドプロシージャの構文について

はじめまして。
SQLServer2014でパラメータ付きのストアドプロシージャを作っています。
パラメータ付きのストアドプロシージャを作ると、
ストアド名の下部に赤い波線が出てしまい、「オブジェクト名~~が無効です」となってしまいます。
(パラメータの無いストアドでは、このような現象は起きません)
赤い波線が出ている状態でも、「クエリが正常に実行されました」とメッセージが出て、
ManagementStudio上では、ちゃんと実行できます。
でも、それが原因ではないのかもしれませんが、プログラムから実行すると、「オブジェクト参照がオブジェクト インスタンスに設定されていません。」と、エラーになってしまいます。
SQLServer2005など以前のバージョンのSQLServerと比べて、ストアドの構文とかが、変わってしまったのでしょうか?

慣れていないので、質問の仕方が悪いようでしたら、ご容赦下さい。
よろしくお願いします。

以下、ストアドの構文です。

USE [xdb]
GO
/****** Object: StoredProcedure [dbo].[PR_TMユーザ] Script Date: 2015/10/12 15:35:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
ALTER PROCEDURE [dbo].[PR_TMユーザ]
@MODE CHAR(1)=NULL,
@intユーザID int=0,
@int性別コード int=0,
@int削除フラグ int=0,
@dteアクセス時間 datetime=NULL,
@strアクセスIPV4 nvarchar(15)=NULL,
@strアクセスIPV6 nvarchar(39)=NULL,
@strアクセスホスト nvarchar(255)=NULL,
@strアクセスブラウザ nvarchar(30)=NULL,
@CreateUserID int=0,
@CreateDatetime datetime=NULL,
@CreateIPV4 nvarchar(15)=NULL,
@CreateIPV6 nvarchar(39)=NULL,
@CreateIPHost nvarchar(255)=NULL,
@UpdateUserID int=0,
@UpdateDatetime datetime=NULL,
@UpdateIPV4 nvarchar(15)=NULL,
@UpdateIPV6 nvarchar(39)=NULL,
@UpdateIPHost nvarchar(255)=NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

DECLARE @intTRANCNT INT, @intERRORCODE INT, @intCOUNT INT, @Severity INT, @Error_Msg VARCHAR(255)

SET @intERRORCODE=0
BEGIN TRY
SET @intTRANCNT=@@TRANCOUNT
IF @intTRANCNT=0
BEGIN TRANSACTION
IF @MODE='1'
BEGIN
SELECT @intユーザID = ISNULL(MAX(intユーザID),0) + 1
FROM M_ユーザ

    INSERT INTO [M_ユーザ]
    (
        [intユーザID],
        [int性別コード],
        [int削除フラグ],
        [dteアクセス時間],
        [strアクセスIPV4],
        [strアクセスIPV6],
        [strアクセスホスト],
        [strアクセスブラウザ],
        [CreateUserID],
        [CreateDatetime],
        [CreateIPV4],
        [CreateIPV6],
        [CreateIPHost],
        [UpdateUserID],
        [UpdateDatetime],
        [UpdateIPV4],
        [UpdateIPV6],
        [UpdateIPHost]
    ) VALUES (
        @intユーザID,
        @int性別コード,
        @int削除フラグ,
        @dteアクセス時間,
        @strアクセスIPV4,
        @strアクセスIPV6,
        @strアクセスホスト,
        @strアクセスブラウザ,
        @intユーザID,
        @CreateDatetime,
        @CreateIPV4,
        @CreateIPV6,
        @CreateIPHost,
        @intユーザID,
        @UpdateDatetime,
        @UpdateIPV4,
        @UpdateIPV6,
        @UpdateIPHost
    )
END
IF @MODE='2'
BEGIN
    UPDATE [M_ユーザ]
    SET
        [int性別コード]=@int性別コード,
        [int削除フラグ]=@int削除フラグ,
        [dteアクセス時間]=@dteアクセス時間,
        [strアクセスIPV4]=@strアクセスIPV4,
        [strアクセスIPV6]=@strアクセスIPV6,
        [strアクセスホスト]=@strアクセスホスト,
        [strアクセスブラウザ]=@strアクセスブラウザ,
        [CreateUserID]=@CreateUserID,
        [CreateDatetime]=@CreateDatetime,
        [CreateIPV4]=@CreateIPV4,
        [CreateIPV6]=@CreateIPV6,
        [CreateIPHost]=@CreateIPHost,
        [UpdateUserID]=@UpdateUserID,
        [UpdateDatetime]=@UpdateDatetime,
        [UpdateIPV4]=@UpdateIPV4,
        [UpdateIPV6]=@UpdateIPV6,
        [UpdateIPHost]=@UpdateIPHost
    WHERE
        [intユーザID]=@intユーザID
    SET @intCOUNT=@@ROWCOUNT
    IF @intCOUNT=0 RAISERROR(50001,11,1)
END
-- トランザクションのコミット
IF @@TRANCOUNT>@intTRANCNT
    COMMIT TRANSACTION

END TRY
BEGIN CATCH
SET @Severity = ERROR_SEVERITY()
SET @Error_Msg = ERROR_MESSAGE()
-- トランザクションのロールバック
IF XACT_STATE() = -1 -- アクティブなトランザクションは存在するがコミットできない
BEGIN
IF @@TRANCOUNT>@intTRANCNT
ROLLBACK TRANSACTION
END
--ELSE IF XACT_STATE() = 0 -- アクティブなトランザクションは存在しない
ELSE IF XACT_STATE() = 1 -- アクティブなトランザクションは存在する
BEGIN
IF @@TRANCOUNT>@intTRANCNT
ROLLBACK TRANSACTION
END
RAISERROR (@Error_Msg, @Severity, 2)
END CATCH
RETURN @intユーザID

END

はじめまして。
SQLServer2014でパラメータ付きのストアドプロシージャを作っています。
パラメータ付きのストアドプロシージャを作ると、
ストアド名の下部に赤い波線が出てしまい、「オブジェクト名~~が無効です」となってしまいます。
(パラメータの無いストアドでは、このような現象は起きません)
赤い波線が出ている状態でも、「クエリが正常に実行されました」とメッセージが出て、
ManagementStudio上では、ちゃんと実行できます。
でも、それが原因ではないのかもしれませんが、プログラムから実行すると、「オブジェクト参照がオブジェクト インスタンスに設定されていません。」と、エラーになってしまいます。
SQLServer2005など以前のバージョンのSQLServerと比べて、ストアドの構文とかが、変わってしまったのでしょうか?

慣れていないので、質問の仕方が悪いようでしたら、ご容赦下さい。
よろしくお願いします。

以下、ストアドの構文です。


USE [xdb]
GO
/****** Object:  StoredProcedure [dbo].[PR_TMユーザ]    Script Date: 2015/10/12 15:35:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[PR_TMユーザ]
	@MODE	CHAR(1)=NULL,
	@intユーザID	int=0,
	@int性別コード	int=0,
	@int削除フラグ	int=0,
	@dteアクセス時間	datetime=NULL,
	@strアクセスIPV4	nvarchar(15)=NULL,
	@strアクセスIPV6	nvarchar(39)=NULL,
	@strアクセスホスト	nvarchar(255)=NULL,
	@strアクセスブラウザ	nvarchar(30)=NULL,
	@CreateUserID	int=0,
	@CreateDatetime	datetime=NULL,
	@CreateIPV4	nvarchar(15)=NULL,
	@CreateIPV6	nvarchar(39)=NULL,
	@CreateIPHost	nvarchar(255)=NULL,
	@UpdateUserID	int=0,
	@UpdateDatetime	datetime=NULL,
	@UpdateIPV4	nvarchar(15)=NULL,
	@UpdateIPV6	nvarchar(39)=NULL,
	@UpdateIPHost	nvarchar(255)=NULL
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
SET NOCOUNT ON;

DECLARE @intTRANCNT INT, @intERRORCODE INT, @intCOUNT INT, @Severity INT, @Error_Msg VARCHAR(255)

SET @intERRORCODE=0
BEGIN TRY
	SET @intTRANCNT=@@TRANCOUNT
	IF @intTRANCNT=0
		BEGIN TRANSACTION
	IF @MODE='1'
	BEGIN
		SELECT @intユーザID = ISNULL(MAX(intユーザID),0) + 1
		FROM M_ユーザ

		INSERT INTO [M_ユーザ]
		(
			[intユーザID],
			[int性別コード],
			[int削除フラグ],
			[dteアクセス時間],
			[strアクセスIPV4],
			[strアクセスIPV6],
			[strアクセスホスト],
			[strアクセスブラウザ],
			[CreateUserID],
			[CreateDatetime],
			[CreateIPV4],
			[CreateIPV6],
			[CreateIPHost],
			[UpdateUserID],
			[UpdateDatetime],
			[UpdateIPV4],
			[UpdateIPV6],
			[UpdateIPHost]
		) VALUES (
			@intユーザID,
			@int性別コード,
			@int削除フラグ,
			@dteアクセス時間,
			@strアクセスIPV4,
			@strアクセスIPV6,
			@strアクセスホスト,
			@strアクセスブラウザ,
			@intユーザID,
			@CreateDatetime,
			@CreateIPV4,
			@CreateIPV6,
			@CreateIPHost,
			@intユーザID,
			@UpdateDatetime,
			@UpdateIPV4,
			@UpdateIPV6,
			@UpdateIPHost
		)
	END
	IF @MODE='2'
	BEGIN
		UPDATE [M_ユーザ]
		SET
			[int性別コード]=@int性別コード,
			[int削除フラグ]=@int削除フラグ,
			[dteアクセス時間]=@dteアクセス時間,
			[strアクセスIPV4]=@strアクセスIPV4,
			[strアクセスIPV6]=@strアクセスIPV6,
			[strアクセスホスト]=@strアクセスホスト,
			[strアクセスブラウザ]=@strアクセスブラウザ,
			[CreateUserID]=@CreateUserID,
			[CreateDatetime]=@CreateDatetime,
			[CreateIPV4]=@CreateIPV4,
			[CreateIPV6]=@CreateIPV6,
			[CreateIPHost]=@CreateIPHost,
			[UpdateUserID]=@UpdateUserID,
			[UpdateDatetime]=@UpdateDatetime,
			[UpdateIPV4]=@UpdateIPV4,
			[UpdateIPV6]=@UpdateIPV6,
			[UpdateIPHost]=@UpdateIPHost
		WHERE
			[intユーザID]=@intユーザID
		SET @intCOUNT=@@ROWCOUNT
		IF @intCOUNT=0 RAISERROR(50001,11,1)
	END
	-- トランザクションのコミット
	IF @@TRANCOUNT>@intTRANCNT
		COMMIT TRANSACTION
END TRY
BEGIN CATCH
	SET @Severity = ERROR_SEVERITY()
	SET @Error_Msg = ERROR_MESSAGE()
	-- トランザクションのロールバック
	IF XACT_STATE() = -1	-- アクティブなトランザクションは存在するがコミットできない
	BEGIN
		IF @@TRANCOUNT>@intTRANCNT
			ROLLBACK TRANSACTION
	END
	--ELSE IF XACT_STATE() = 0	-- アクティブなトランザクションは存在しない
	ELSE IF XACT_STATE() = 1	-- アクティブなトランザクションは存在する
	BEGIN
		IF @@TRANCOUNT>@intTRANCNT
			ROLLBACK TRANSACTION
	END
	RAISERROR (@Error_Msg, @Severity, 2)
END CATCH
RETURN @intユーザID

END

質問を投稿

SQLServer2014のストアドプロシージャの構文について

はじめまして。
SQLServer2014でパラメータ付きのストアドプロシージャを作っています。
パラメータ付きのストアドプロシージャを作ると、
ストアド名の下部に赤い波線が出てしまい、「オブジェクト名~~が無効です」となってしまいます。
(パラメータの無いストアドでは、このような現象は起きません)
赤い波線が出ている状態でも、「クエリが正常に実行されました」とメッセージが出て、
ManagementStudio上では、ちゃんと実行できます。
でも、それが原因ではないのかもしれませんが、プログラムから実行すると、「オブジェクト参照がオブジェクト インスタンスに設定されていません。」と、エラーになってしまいます。
SQLServer2005など以前のバージョンのSQLServerと比べて、ストアドの構文とかが、変わってしまったのでしょうか?

慣れていないので、質問の仕方が悪いようでしたら、ご容赦下さい。
よろしくお願いします。

以下、ストアドの構文です。

USE [xdb]
GO
/****** Object: StoredProcedure [dbo].[PR_TMユーザ] Script Date: 2015/10/12 15:35:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
ALTER PROCEDURE [dbo].[PR_TMユーザ]
@MODE CHAR(1)=NULL,
@intユーザID int=0,
@int性別コード int=0,
@int削除フラグ int=0,
@dteアクセス時間 datetime=NULL,
@strアクセスIPV4 nvarchar(15)=NULL,
@strアクセスIPV6 nvarchar(39)=NULL,
@strアクセスホスト nvarchar(255)=NULL,
@strアクセスブラウザ nvarchar(30)=NULL,
@CreateUserID int=0,
@CreateDatetime datetime=NULL,
@CreateIPV4 nvarchar(15)=NULL,
@CreateIPV6 nvarchar(39)=NULL,
@CreateIPHost nvarchar(255)=NULL,
@UpdateUserID int=0,
@UpdateDatetime datetime=NULL,
@UpdateIPV4 nvarchar(15)=NULL,
@UpdateIPV6 nvarchar(39)=NULL,
@UpdateIPHost nvarchar(255)=NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

DECLARE @intTRANCNT INT, @intERRORCODE INT, @intCOUNT INT, @Severity INT, @Error_Msg VARCHAR(255)

SET @intERRORCODE=0
BEGIN TRY
SET @intTRANCNT=@@TRANCOUNT
IF @intTRANCNT=0
BEGIN TRANSACTION
IF @MODE='1'
BEGIN
SELECT @intユーザID = ISNULL(MAX(intユーザID),0) + 1
FROM M_ユーザ

    INSERT INTO [M_ユーザ]
    (
        [intユーザID],
        [int性別コード],
        [int削除フラグ],
        [dteアクセス時間],
        [strアクセスIPV4],
        [strアクセスIPV6],
        [strアクセスホスト],
        [strアクセスブラウザ],
        [CreateUserID],
        [CreateDatetime],
        [CreateIPV4],
        [CreateIPV6],
        [CreateIPHost],
        [UpdateUserID],
        [UpdateDatetime],
        [UpdateIPV4],
        [UpdateIPV6],
        [UpdateIPHost]
    ) VALUES (
        @intユーザID,
        @int性別コード,
        @int削除フラグ,
        @dteアクセス時間,
        @strアクセスIPV4,
        @strアクセスIPV6,
        @strアクセスホスト,
        @strアクセスブラウザ,
        @intユーザID,
        @CreateDatetime,
        @CreateIPV4,
        @CreateIPV6,
        @CreateIPHost,
        @intユーザID,
        @UpdateDatetime,
        @UpdateIPV4,
        @UpdateIPV6,
        @UpdateIPHost
    )
END
IF @MODE='2'
BEGIN
    UPDATE [M_ユーザ]
    SET
        [int性別コード]=@int性別コード,
        [int削除フラグ]=@int削除フラグ,
        [dteアクセス時間]=@dteアクセス時間,
        [strアクセスIPV4]=@strアクセスIPV4,
        [strアクセスIPV6]=@strアクセスIPV6,
        [strアクセスホスト]=@strアクセスホスト,
        [strアクセスブラウザ]=@strアクセスブラウザ,
        [CreateUserID]=@CreateUserID,
        [CreateDatetime]=@CreateDatetime,
        [CreateIPV4]=@CreateIPV4,
        [CreateIPV6]=@CreateIPV6,
        [CreateIPHost]=@CreateIPHost,
        [UpdateUserID]=@UpdateUserID,
        [UpdateDatetime]=@UpdateDatetime,
        [UpdateIPV4]=@UpdateIPV4,
        [UpdateIPV6]=@UpdateIPV6,
        [UpdateIPHost]=@UpdateIPHost
    WHERE
        [intユーザID]=@intユーザID
    SET @intCOUNT=@@ROWCOUNT
    IF @intCOUNT=0 RAISERROR(50001,11,1)
END
-- トランザクションのコミット
IF @@TRANCOUNT>@intTRANCNT
    COMMIT TRANSACTION

END TRY
BEGIN CATCH
SET @Severity = ERROR_SEVERITY()
SET @Error_Msg = ERROR_MESSAGE()
-- トランザクションのロールバック
IF XACT_STATE() = -1 -- アクティブなトランザクションは存在するがコミットできない
BEGIN
IF @@TRANCOUNT>@intTRANCNT
ROLLBACK TRANSACTION
END
--ELSE IF XACT_STATE() = 0 -- アクティブなトランザクションは存在しない
ELSE IF XACT_STATE() = 1 -- アクティブなトランザクションは存在する
BEGIN
IF @@TRANCOUNT>@intTRANCNT
ROLLBACK TRANSACTION
END
RAISERROR (@Error_Msg, @Severity, 2)
END CATCH
RETURN @intユーザID

END

はじめまして。
SQLServer2014でパラメータ付きのストアドプロシージャを作っています。
パラメータ付きのストアドプロシージャを作ると、
ストアド名の下部に赤い波線が出てしまい、「オブジェクト名~~が無効です」となってしまいます。
(パラメータの無いストアドでは、このような現象は起きません)
赤い波線が出ている状態でも、「クエリが正常に実行されました」とメッセージが出て、
ManagementStudio上では、ちゃんと実行できます。
でも、それが原因ではないのかもしれませんが、プログラムから実行すると、「オブジェクト参照がオブジェクト インスタンスに設定されていません。」と、エラーになってしまいます。
SQLServer2005など以前のバージョンのSQLServerと比べて、ストアドの構文とかが、変わってしまったのでしょうか?

慣れていないので、質問の仕方が悪いようでしたら、ご容赦下さい。
よろしくお願いします。

以下、ストアドの構文です。


USE [xdb]
GO
/****** Object:  StoredProcedure [dbo].[PR_TMユーザ]    Script Date: 2015/10/12 15:35:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[PR_TMユーザ]
	@MODE	CHAR(1)=NULL,
	@intユーザID	int=0,
	@int性別コード	int=0,
	@int削除フラグ	int=0,
	@dteアクセス時間	datetime=NULL,
	@strアクセスIPV4	nvarchar(15)=NULL,
	@strアクセスIPV6	nvarchar(39)=NULL,
	@strアクセスホスト	nvarchar(255)=NULL,
	@strアクセスブラウザ	nvarchar(30)=NULL,
	@CreateUserID	int=0,
	@CreateDatetime	datetime=NULL,
	@CreateIPV4	nvarchar(15)=NULL,
	@CreateIPV6	nvarchar(39)=NULL,
	@CreateIPHost	nvarchar(255)=NULL,
	@UpdateUserID	int=0,
	@UpdateDatetime	datetime=NULL,
	@UpdateIPV4	nvarchar(15)=NULL,
	@UpdateIPV6	nvarchar(39)=NULL,
	@UpdateIPHost	nvarchar(255)=NULL
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
SET NOCOUNT ON;

DECLARE @intTRANCNT INT, @intERRORCODE INT, @intCOUNT INT, @Severity INT, @Error_Msg VARCHAR(255)

SET @intERRORCODE=0
BEGIN TRY
	SET @intTRANCNT=@@TRANCOUNT
	IF @intTRANCNT=0
		BEGIN TRANSACTION
	IF @MODE='1'
	BEGIN
		SELECT @intユーザID = ISNULL(MAX(intユーザID),0) + 1
		FROM M_ユーザ

		INSERT INTO [M_ユーザ]
		(
			[intユーザID],
			[int性別コード],
			[int削除フラグ],
			[dteアクセス時間],
			[strアクセスIPV4],
			[strアクセスIPV6],
			[strアクセスホスト],
			[strアクセスブラウザ],
			[CreateUserID],
			[CreateDatetime],
			[CreateIPV4],
			[CreateIPV6],
			[CreateIPHost],
			[UpdateUserID],
			[UpdateDatetime],
			[UpdateIPV4],
			[UpdateIPV6],
			[UpdateIPHost]
		) VALUES (
			@intユーザID,
			@int性別コード,
			@int削除フラグ,
			@dteアクセス時間,
			@strアクセスIPV4,
			@strアクセスIPV6,
			@strアクセスホスト,
			@strアクセスブラウザ,
			@intユーザID,
			@CreateDatetime,
			@CreateIPV4,
			@CreateIPV6,
			@CreateIPHost,
			@intユーザID,
			@UpdateDatetime,
			@UpdateIPV4,
			@UpdateIPV6,
			@UpdateIPHost
		)
	END
	IF @MODE='2'
	BEGIN
		UPDATE [M_ユーザ]
		SET
			[int性別コード]=@int性別コード,
			[int削除フラグ]=@int削除フラグ,
			[dteアクセス時間]=@dteアクセス時間,
			[strアクセスIPV4]=@strアクセスIPV4,
			[strアクセスIPV6]=@strアクセスIPV6,
			[strアクセスホスト]=@strアクセスホスト,
			[strアクセスブラウザ]=@strアクセスブラウザ,
			[CreateUserID]=@CreateUserID,
			[CreateDatetime]=@CreateDatetime,
			[CreateIPV4]=@CreateIPV4,
			[CreateIPV6]=@CreateIPV6,
			[CreateIPHost]=@CreateIPHost,
			[UpdateUserID]=@UpdateUserID,
			[UpdateDatetime]=@UpdateDatetime,
			[UpdateIPV4]=@UpdateIPV4,
			[UpdateIPV6]=@UpdateIPV6,
			[UpdateIPHost]=@UpdateIPHost
		WHERE
			[intユーザID]=@intユーザID
		SET @intCOUNT=@@ROWCOUNT
		IF @intCOUNT=0 RAISERROR(50001,11,1)
	END
	-- トランザクションのコミット
	IF @@TRANCOUNT>@intTRANCNT
		COMMIT TRANSACTION
END TRY
BEGIN CATCH
	SET @Severity = ERROR_SEVERITY()
	SET @Error_Msg = ERROR_MESSAGE()
	-- トランザクションのロールバック
	IF XACT_STATE() = -1	-- アクティブなトランザクションは存在するがコミットできない
	BEGIN
		IF @@TRANCOUNT>@intTRANCNT
			ROLLBACK TRANSACTION
	END
	--ELSE IF XACT_STATE() = 0	-- アクティブなトランザクションは存在しない
	ELSE IF XACT_STATE() = 1	-- アクティブなトランザクションは存在する
	BEGIN
		IF @@TRANCOUNT>@intTRANCNT
			ROLLBACK TRANSACTION
	END
	RAISERROR (@Error_Msg, @Severity, 2)
END CATCH
RETURN @intユーザID

END