0

なぜこれがintのタイプを返すのか誰かに教えてもらえますか?

ALTER PROCEDURE [dbo].[spTableExists] @TableName char(40), @Exists char(5) OUTPUT  
AS

IF object_id(@TableName) is not null
    select @Exists = 'true'
ELSE
    select @Exists = 'false'
4

2 に答える 2

1

@Existsパラメータのデータ型が「char(5)」であるためだと思います。

データの長さが固定されている場合は、Charを使用する必要があります。

これを試して:

CREATE PROCEDURE [dbo].[spTableExists] @TableName varchar(40), @Exists varchar(5) OUTPUT  
AS

SET @Exists = 'false'
IF object_id(@TableName) is not null
    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(@TableName) AND type in (N'U'))
    BEGIN
    SET @Exists = 'true'
    END
ELSE
    SET @Exists = 'false'

SELECT @Exists
于 2012-12-05T00:12:40.217 に答える
0

ステートメントがないためset nocount on、行数が返されます。他の結果を返さないので、割り当てを行うだけで、それがすべてです。

于 2012-12-05T01:58:27.483 に答える