如何在开始时仅将相同的输入传递给所有sql文件一次?

时间:2008-12-12 12:37:11

标签: sql mysql

我一次从文件中调用4-5个脚本。 但是我需要在我调用的第一个sql中只给一个文件输入。

该输入将是我在第一个之后调用的所有其他sql文件的输入。

有没有办法做到这一点?

请帮忙。

4 个答案:

答案 0 :(得分:1)

我认为您可以使用sqlcmd实用程序和scripting variables来实现您的目标。最后一个链接指出您也可以使用环境变量。

答案 1 :(得分:0)

你的意思是:

query2基于query1的结果, query3基于query2等的结果...

如果是这样,您可以使用视图

create view view1 as select * from table1;
create view view2 as select * from view2;
create view view3 as select * from view3;
create view view4 as select * from view4;
select * from view4

当然你必须自己添加where子句。

有关观看http://dev.mysql.com/doc/refman/5.0/en/create-view.html

的更多信息,请参阅

答案 2 :(得分:0)

无 START fbm.sql START fba.sql 开始fei.sql START fbe.sql 启动fae.sql START tfat.sql 启动ins_FBH.sql 是代码。

在fbm.sql中 我有一个像bill id ='& 1'的输入。 我也在其他sql中输入了相同的账单ID。

但是当我运行主sql时,它将运行fbm.sql并询问我输入的账单ID。 假设我把它作为'ABC'并且在完成这个fbm.sql之后再次询问我再次为fba.sql输入账单id,我不想再给n了。 我想要的是这个fba.sql和其他相应的sql应该将输入的账单ID作为'ABC'而不输入它。

答案 3 :(得分:0)

您是否考虑过使用存储过程?它确实取决于拥有MySQL的5.0版本(或更高版本)。但这允许您定义变量并在程序中使用它们,非常灵活且使用起来非常有趣!警告,我自己没有测试过,我的经验是Oracle PL / SQL,但概念类似。

然后你可以做这样的事情(来自MySQL时事通讯:

http://www.mysql.com/news-and-events/newsletter/2004-01/a0000000297.html

DELIMITER // [1]

CREATE PROCEDURE payment [2]
(payment_amount DECIMAL(6,2),
payment_seller_id INT)
BEGIN
DECLARE n DECIMAL(6,2);
SET n = payment_amount - 1.00;
INSERT INTO Moneys VALUES (n, CURRENT_DATE);
IF payment_amount > 1.00 THEN
UPDATE Sellers
SET commission = commission + 1.00
WHERE seller_id = payment_seller_id;
END IF;
END;
//