【问题标题】:SQL Proc Stock errorSQL Proc 库存错误
【发布时间】:2014-12-09 17:14:49
【问题描述】:

我需要你的帮助来解决关于 SQL 的一个小问题。 有关信息,我的环境是在我的计算机上本地用于实验室测试的 SQL Express 2008 R2。 你好 所以,我想一步一步地运行这个过程:

1st query : Proc_Choise_Test 1; ==> Create MY_DATABASE
2nd query : Proc_Choise_Test 2; ==> Create Tables
...

问题是,当我使用这个命令时:“Proc_Choise_Test 1;”我有一条错误消息说:“MY_DATABASE 数据库不存在”或类似的东西(因为我的 SQL 服务器是法语版)

但是,当我逐个运行每个选项时,一切正常。

我不知道我的程序的错误在哪里......

非常感谢您的行动;)

--===============================================================--
--CREATE / ALTER procedure Proc_Choise_Test
--===============================================================--
CREATE PROCEDURE Proc_Choise_Test

@Proc_Choise_Test INT 
AS
BEGIN

--===============================================================--
--Creation of GOTO for query
--===============================================================--
    IF @Proc_Choise_Test = 1 GOTO Choise1
    IF @Proc_Choise_Test = 2 GOTO Choise2
    IF @Proc_Choise_Test = 3 GOTO Choise3
    IF @Proc_Choise_Test = 4 GOTO Choise4
    IF @Proc_Choise_Test > 4 GOTO ChoiseERROR 
--===============================================================--
--Choise 1 : CREATE DATABASE : MY_DATABASE
--===============================================================--
Choise1:
CREATE DATABASE MY_DATABASE;
GOTO ChoiseEnd

--===============================================================--
--Choise 2 : CREATE TABLE IN MY_DATABASE
--===============================================================--
Choise2:
CREATE TABLE MY_DATABASE.dbo.TB_Clients
(
clients_id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
clients_contact_nom NVARCHAR(255),
clients_contact_prenom NVARCHAR(255),
clients_entreprise NVARCHAR(255),
clients_adresse NVARCHAR(255),
clients_code_postal NVARCHAR(10),
clients_ville NVARCHAR(255),
clients_tel NVARCHAR(20),
clients_infos NVARCHAR(255)
);

CREATE TABLE MY_DATABASE.dbo.TB_Projets
(
projets_clients_id INT,
projets_id INT NOT NULL PRIMARY KEY,
projets_employe_cdp NVARCHAR(255),
projets_date_vente DATE,
projets_date_installation DATE,
);
GOTO ChoiseEnd

--===============================================================--
--Choise 3 : INSERT CSV IN TB_Clients TABLE
--===============================================================--
Choise3:
BULK
INSERT MY_DATABASE.dbo.TB_Clients
FROM 'C:\Temp\testcsv.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GOTO ChoiseEnd

--===============================================================--
--Choise 4 : DECLARE VAR FOR EXPORT
--===============================================================--
Choise4:
DECLARE @FileName   VARCHAR(100)
DECLARE @Name_File  VARCHAR(100)
DECLARE @Sqlreq     VARCHAR(8000)

--===============================================================--
--EXPORT IN TXT FILE IN C:\Temp\Export\
--===============================================================--
SET @FileName = 'RM_EXPORT' + (SELECT CONVERT (VARCHAR(8),GETDATE(),112) + '_' + REPLACE(CONVERT (VARCHAR(8),GETDATE(),108), ':', '-'))
If @FileName > ''
    BEGIN
        SET @Sqlreq = 'bcp "SELECT * FROM MY_DATABASE.dbo.TB_Clients" queryout "'
        SET @Sqlreq = @Sqlreq + 'C:\Temp\' + @FileName + '.txt' + '" -T -c -t"|"'
        print @Sqlreq
        exec master..xp_cmdshell @Sqlreq
    END 
    ELSE
    BEGIN
        SELECT * 
        FROM MY_DATABASE.dbo.TB_Clients 
        ORDER BY clients_entreprise
    END
GOTO ChoiseEnd

--===============================================================--
--Choise ERROR : ERROR MESSAGE
--===============================================================--
ChoiseERROR:
        SELECT 'ERROR'
--===============================================================--
--ChoiseEnd : ENDING QUERY
--===============================================================--
ChoiseEnd:

END

【问题讨论】:

  • UGH GOTO???为什么你有一个程序可以创建一个完全没有检查的数据库? GOTO 和命名代码块绝对是做任何事情的可怕方式。

标签: sql sql-server sql-server-2008 create-table


【解决方案1】:

认为您需要在整个代码中使用一些“Go”语句

【讨论】:

    猜你喜欢
    • 2019-09-24
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    相关资源
    最近更新 更多