我一次从文件中调用4-5个脚本。 但是我需要在我调用的第一个sql中只给一个文件输入。
该输入将是我在第一个之后调用的所有其他sql文件的输入。
有没有办法做到这一点?
请帮忙。
答案 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子句。
的更多信息,请参阅答案 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;
//