谁能告诉我为什么这会返回一种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'
答案 0 :(得分:1)
我认为这是因为@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
答案 1 :(得分:0)
缺少set nocount on
语句,它返回行计数。因为它不会返回任何其他结果,所以它只是进行一项任务,就是你得到的所有结果。