誰能告訴我爲什麼這個返回一個int類型的?我期待字符的返回類型,但得到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'
誰能告訴我爲什麼這個返回一個int類型的?我期待字符的返回類型,但得到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'
我想這是因爲@Exists的參數的數據類型爲 「CHAR(5)」。
數據具有固定長度時必須使用字符。
試試這個:
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
這可能會起作用,但是您沒有回答問題,即「爲什麼當我期待char時我的過程返回int?」。 –
謝謝@KenWhite。我添加了原因。 – Nathan
@Nathan感謝的人。 – StatsViaCsh
缺乏一個set nocount on
聲明,它返回的行數。由於它不返回任何其他結果,它只是做一個任務,那就是你所得到的。
因爲您還沒有指定它返回的內容嗎?... –
爲什麼使用過程返回單個值?這正是設計要實現的功能,您可以專門指定返回類型。 –
@MitchWheat感謝米奇。 – StatsViaCsh