日期:2014-05-17  浏览次数:20340 次

新手 编写T-SQL代码出错求大神指教
本帖最后由 chkhappy 于 2012-12-22 15:27:08 编辑
在sql server 2005 express 上
代码如下
CREATE PROC CreateNameTable
@name CLIENT_NAME
AS
DECLARE @result tinyint,@tableName NVARCHAR(50)
SET @tableName=N'[dbo].[' +@name+ N']'
EXEC @result=CheckForName @name

if(@result = 0)
RETURN 0
ELSE
BEGIN
IF(exists(SELECT * FROM dbo.sysobjects 
WHERE id = OBJECT_ID(@tableName) 
AND OBJECTPROPERTY(id,'IsUserTable')=1)
)
BEGIN
TRUNCATE TABLE @tableName
END
ELSE
BEGIN
CREATE TABLE @tableName
(
发送到 CLIENT_NAME ,
内容  NVARCHAR(500) NULL,
时间  datetime NOT NULL
)
END
RETURN 1
END

错误如下
Msg 102, Level 15, State 1, Procedure CreateNameTable, Line 17
'TABE' 附近有语法错误。
Msg 102, Level 15, State 1, Procedure CreateNameTable, Line 21
'@name' 附近有语法错误。
------解决方案--------------------

CREATE PROC CreateNameTable
    @name CLIENT_NAME
    AS
    DECLARE @result tinyint,@tableName NVARCHAR(50)
    SET @tableName=N'[dbo].[' +@name+ N']'
    EXEC @result=CheckForName @name
 
    if(@result = 0)
        RETURN 0
    ELSE
        BEGIN
        IF(exists(SELECT * FROM dbo.sysobjects 
            WHERE id = OBJECT_ID(@tableName) 
            AND OBJECTPROPERTY(id,'IsUserTable')=1)
            )
            BEGIN
            EXEC('TRUNCATE table '+@tableName)
            END
        ELSE
            BEGIN
            EXEC('CREATE TABLE '+@tableName+'
            (
                发送到 CLIENT_NAME ,
                内容  NVARCHAR(500) NULL,
                时间  datetime NOT NULL
            )')
            END
        RETURN 1
        END

------解决方案--------------------
CREATE