我想知道是否有可能创建一个像是否有可能创建一个存储过程,给定一个任意表,返回一个虚拟行?
CREATE PROCEDURE GetDummyRow
@table_name VARCHAR(128)
BEGIN
-- ...
END
是插入到一个表名@table_name
虚设行并从过程返回它的过程。预计@table_name
有一个主键。
举例来说,如果我有一个像
==========================================
Persons
============================================
id | first_name | last_name | spouse_id
============================================
1 | "John" | "Skeet" | 2
2 | "Jane" | "Skeet" | 1
3 | "Bjarne" | "Stroustrup" | NULL
与
CREATE TABLE Persons
(
id INT AUTO_INCREMEMENT,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
spouse_id INT,
PRIMARY KEY id,
FOREIGN KEY spouse_id REFERENCES Persons.id
)
创建
一个表,我想
DECLARE @t VARCHAR(128);
@t = 'Persons';
EXEC GetDummyRow(@t)
返回
4 | "ASDbaj" | "OEROANkaskoaASDOLJ" | NULL
或
4 | "okasdALAJajdlaLashdasi" | "OEROANkaskoaASDOLJadasd" | 3
例如。
是否有任何逻辑的原因,这将是不可能的?
是的,这是可能的,但是这将是非常艰巨的编写。我会认真寻找另一种方式去做任何你想做的事情。 –
是的,这很复杂,会很快得到惊人的。您正试图创建一些将随机值插入任何表的动态代码。这开始变得非常困难,如果不是不可能的话,还有一些数据类型。您还必须考虑现有的外键和约束,以便插入不会失败。它可以做到,但需要做出令人难以置信的努力才能使其足够强大以实际工作。考虑到动态性,它可能会非常慢! –