私はそれが名前@table_name
でテーブルにダミー行を挿入し、プロシージャからそれを返し任意のテーブルを指定するとダミー行を返すストアドプロシージャを作成できますか?
CREATE PROCEDURE GetDummyRow
@table_name VARCHAR(128)
BEGIN
-- ...
END
のようなプロシージャを作成することが可能ですか疑問に思って。 @table_name
に主キーがあることを想定してください。例えば
、私は
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
)
で作成
==========================================
Persons
============================================
id | first_name | last_name | spouse_id
============================================
1 | "John" | "Skeet" | 2
2 | "Jane" | "Skeet" | 1
3 | "Bjarne" | "Stroustrup" | NULL
のようなテーブルがあると私は
DECLARE @t VARCHAR(128);
@t = 'Persons';
EXEC GetDummyRow(@t)
が
4 | "ASDbaj" | "OEROANkaskoaASDOLJ" | NULL
を返すようにしたい場合
または
4 | "okasdALAJajdlaLashdasi" | "OEROANkaskoaASDOLJadasd" | 3
たとえば、
これが不可能な論理的理由はありますか?
はい、それは可能だが、それを書くのは非常に骨の折れるだろう。私は真剣にあなたがやろうとしていることをやるための別の方法を探しています。 –
ええ、これの複雑さは非常に迅速に驚異的になるだろう。任意のテーブルにランダムな値を挿入する、ある種の動的コードを作成しようとしています。一部のデータ型では、境界線が不可能ではないにしても、これは本当に困難になり始めます。既存の外部キーと制約を考慮して、挿入が失敗しないようにする必要もあります。それは行えるかもしれませんが、実際に働くには頑強にするには信じられないほどの努力が必要です。ダイナミックな性質を考えると、それは本当に遅くなる可能性もあります!! –