日期:2014-05-18  浏览次数:20486 次

创建存储过程
创建一个存储过程,并用T-SQL传参数给过程
这是我创建存储过程的句子,报错如下:
消息 156,级别 15,状态 1,过程 BackupFullDB,第 4 行
关键字 'DECLARE' 附近有语法错误。
消息 102,级别 15,状态 1,过程 BackupFullDB,第 12 行
',' 附近有语法错误。
消息 319,级别 15,状态 1,过程 BackupFullDB,第 14 行
关键字 'with' 附近有语法错误。如果此语句是公用表表达式或 xmlnamespaces 子句,那么前一个语句必须以分号结尾。
不知道是何处不对,请指教,谢谢!

附代码
SQL code

USE test
GO
CREATE PROCEDURE BackupFullDB
--BEGIN

    DECLARE  @DBName        VARCHAR(100)
    DECLARE  @ym            VARCHAR(6)
    DECLARE  @ymd           VARCHAR(8)
    DECLARE  @BackupFile    VARCHAR(100)
    DECLARE  @BackName      VARCHAR(100)
    DECLARE  @tmp           VARCHAR(100)
    DECLARE  @backupSetId   as int

    BACKUP DATABASE   @DBName, sysname, @DBName
    TO     DISK     = @BackupFile
    WITH
        NOFORMAT,
        NOINIT,
        NAME = @BackName,
        SKIP,
        NOREWIND,
        NOUNLOAD,
        STATS = 10,
        CHECKSUM
    SELECT
        @backupSetId = position FROM msdb..backupset
        WHERE database_name = @DBName
        AND   backup_set_id = (SELECT max(backup_set_id) FROM msdb..backupset WHERE database_name = @DBName)

    IF @backupSetId IS NULL
    BEGIN
        raiserror(@tmp, 16, 1)
    END
    RESTORE VERIFYONLY FROM
    DISK = @BackupFile WITH
    FILE = @backupSetId,  NOUNLOAD,  NOREWIND



------解决方案--------------------
SQL code

你这个传参数,需要动态凭借你的备份语句啊:
 set @sql='BACKUP DATABASE  '+'''' @DBName''''+', sysname, '+''''@DBName''''
    +'TO     DISK     ='+'''' @BackupFile++++

后面的也是如此,自己改改吧