Хранимая процедура с вводом и выводом SQL - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь создать хранимую процедуру, которая принимает имя / или число и возвращает определенное значение для этого имени / номера

Так что в этом коде я пытаюсь написать хранимую процедуру, которая принимаетназвание компании или номер cvr и вернуть степень соответствия для этой компании

    DROP DATABASE IF EXISTS DRCS;
    CREATE DATABASE DRCS;
    USE DRCS; 

    CREATE TABLE Companies ( 
            ID INT not null,
            Name varchar(255), 
            primary key (ID) 
    ); 

    CREATE TABLE CVR (
            ID INT not null,
            CVR_Number INT 
    ); 

    CREATE TABLE Compliance (
            ID INT not null,
            Complaince_level varchar(255)
    ); 

    CREATE TABLE GDPR (
            ID INT not null,
            GDPR_steps varchar(255) 
    ); 

                INSERT INTO Companies VALUES 
                (1, 'TDC'),
                (2, 'MAERSK'),
                (3, 'LEGO'), 
                (4, 'SAS'),
                (5, 'Carlsberg');

                INSERT INTO CVR VALUES 
                (11, '14773908'),
                (12, '32345794'),
                (13, '47458714'),
                (14, '56994912'),
                (15, '61056416');

                INSERT INTO Compliance VALUES 
                (21, '10%'),
                (22, '20%'),
                (23, '40%'),
                (24, '60%'),
                (25, '80%');

                INSERT INTO GDPR VALUES 
                (31, '1. Awareness'),
                (32, '2. Information you hold'),
                (33, '3. Communication privacy information'),
                (34, '4. Individuals rights'),
                (35, '5. Subject access requests'); 

#HERE MY PROBLEM STARTS                

    DELIMITER $$
        CREATE PROCEDURE DoC() 
        BEGIN 
        SELECT * FROM Companies , CVR, Compliance, GDPR; 

        END $$
    DELIMITER ;


    CALL DoC;

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Вы можете сделать с объединением запроса для всей таблицы.Но все выбранные запросы количества кломумов должны быть одинаковыми.

DELIMITER $$
    CREATE PROCEDURE DoC() 
  SELECT A.id,A.name FROM
   ( SELECT id as id , name as name FROM Companies 
    UNION ALL
    SELECT id as id , name as name FROM CVR
    UNION ALL
    SELECT id as id , name as name FROM Compliance
    UNION ALL
    SELECT id as id , name as name FROM  GDPR) as A

  END $$
DELIMITER ;
0 голосов
/ 24 мая 2018

Нет связи между четырьмя столами!Создайте строки с общим идентификатором, таким как id = 1,2,3,4 для всех таблиц, затем выполните объединение, а затем попробуйте перечислить поля, которые вы хотите просмотреть.

ВСТАВИТЬ В ЗНАЧЕНИЯ КОМПАНИЙ (1, 'TDC'), (2,' MAERSK '), (3,' LEGO '), (4,' SAS '), (5,' Carlsberg ');

            INSERT INTO CVR VALUES 
            (1, '14773908'),
            (2, '32345794'),
            (3, '47458714'),
            (4, '56994912'),
            (5, '61056416');

            INSERT INTO Compliance VALUES 
            (1, '10%'),
            (2, '20%'),
            (3, '40%'),
            (4, '60%'),
            (5, '80%');

            INSERT INTO GDPR VALUES 
            (1, '1. Awareness'),
            (2, '2. Information you hold'),
            (3, '3. Communication privacy information'),
            (4, '4. Individuals rights'),
            (5, '5. Subject access requests'); 

выберите c.id, v.cvr_Number от компаний c, cvr v, где c.id = v.id

Аналогичным образом добавьте дополнительные таблицы, присоединившись к id.Вам не нужна процедура для этого, и процедура не предназначена для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...