Problem with Dynamic Table Name
Hello all,
I am having trouble using a dynamic table name. I have the following code.....
declare l_cur sys_refcursor;
l_ID int;
l_tableName varchar(30);
BEGIN
open l_cur for
select hkc.ColumnID, mapping from &HKAPPDB_Schema_Name..doctablemapping ddm
inner join &HKDB_Schema_Name..HKColumns hkc on hkc.doctablemappingid = ddm.id
where ddm.id > 0;
LOOP
FETCH l_cur into l_ID, l_tableName;
EXIT WHEN l_cur%notfound;
-- update missing VerbID in DocumentDocMapping table
UPDATE &HKAPPDB_Schema_Name..IndexedDocument
SET VerbID = (SELECT t.VerbID
FROM (SELECT DocRef, VerbID, DateUpdated
FROM &HKAPPDB_Schema_Name..l_tableName dd - this is where the dynamic table name is used
WHERE dd.VerbID is not NULL))
WHERE HKColumnID = l_ID AND VerbID is NULL;
END loop;
end;
/When I try to execute this i get an error
ORA-00942: table or view does not exist
What am I doing wrong?
Regards,
Toby
redeye wrote:
I only started about 6 weeks ago, with no tutorials and learning it on the fly; Same here.. only my introduction was to a 12 node Oracle OPS cluster all those years ago.. and required a whole new mind set after using SQL-Server extensively. But it was fun. Still is. :-)
but thats what you get when a company throws you in at the deep end with a ridiculous time constraint to migrate a whole MSSQL DB.Migrating SQL-Server to Oracle is not a simple thing. A lot of best practices in SQL-Server are absolutely worse practices in Oracle - they are that different. Simple example is lock escalation - an issue in SQL-Server. In Oracle, the concept of a lock being escalated into a page lock simply does not exist.
In terms of getting the migration done as quickly and painlessly as possible I try to reuse all the logic as it appears in the MSSQL code - in this case it was using dynamic table names. I do not doubt that i am probably shooting myself in the foot in the long run.....As long as you do not splatter too much blood on us here.. not a problem :D
Seriously though - just keep in mind that what works in SQL-Server may not work as well (or even at all) in Oracle. So do not hesitate to refactor (from design to code to SQL) mercilessly when you think it is warranted.
Similar Messages
-
INNER join with dynamic table name ?
Hi,
I have a problem with this statement.
DATA: g_dso_bic_dofr TYPE tabname.
SELECT t1~/bic/ziparomr
t2~/bic/zifremom
INTO (wa_rater_paromr-/bic/ziparomr,
wa_rater_paromr-/bic/zifremom)
* FROM /bic/azd0bfr5100 AS t1 "equivalent to the dynamic statement below
" this is the problem
FROM (g_dso_bic_dofr )AS t1
INNER JOIN /bic/pzifremom AS t2
ON t1~/bic/ziparomr = t2~/bic/ziparomr
" --- to here
WHERE t1~/bic/zikom = v_kommune
The compile check doesnt work when i use the variable table name.
I get
"Wrong expression "INNER" in FROM clause. WHERE condition."
Can anyone help me.
Br Rasmus." this is the problem
* FROM (g_dso_bic_dofr )AS t1 "<<--- check spaces in here
FROM (g_dso_bic_dofr) AS t1 "<<--- and here
INNER JOIN /bic/pzifremom AS t2
ON t1~/bic/ziparomr = t2~/bic/ziparomr
" --- to here
I think there's the problem, the space behind the parenthesis.
Regards -
Create table with dynamic table name.
I'm trying to create a table
like
select x.*, convert(nvarchar(20), getdate(), 101) AS LoadDate
into table1_20140512
from (
select c1,c2,c3 from table2_20140512
WHERE(LoadDate = (select MAX(LoadDate) FROM table2_20140512 )
union all
select c1,c2,c3 from table3_20140512
WHERE(LoadDate = (select MAX(LoadDate) FROM table3_20140512 )
) X
I want to make table name dynamic, like 'table1'+toady's date
I declared three variables, but they didn't work as I expected
These are my variables
DECLARE @table1 nvarchar(500)
DECLARE @table2 nvarchar(500)
DECLARE @table3 nvarchar(500)
SET @table1='H1_' +(CONVERT(VARCHAR(8),GETDATE(),112))
SET @table2='H2_' +(CONVERT(VARCHAR(8),GETDATE(),112))
SET @table2='H3_' +(CONVERT(VARCHAR(8),GETDATE(),112))Try the following:
DECLARE @SQL nvarchar(2000);
DECLARE @table1 nvarchar(500) ='H1_' +(CONVERT(VARCHAR(8),GETDATE(),112));
DECLARE @table2 nvarchar(500) ='H2_' +(CONVERT(VARCHAR(8),GETDATE(),112));
DECLARE @table3 nvarchar(500) ='H3_' +(CONVERT(VARCHAR(8),GETDATE(),112));
PRINT @table1+' '+@table2+' '+@table3;
--H1_20140512 H2_20140512 H3_20140512
SET @SQL = 'select x.*, convert(nvarchar(20), getdate(), 101) AS LoadDate
into '+QUOTENAME(@table1)+'
from (
select c1,c2,c3 from table2_20140512
WHERE(LoadDate = (select MAX(LoadDate) FROM '+QUOTENAME(@table2)+' ))
union all
select c1,c2,c3 from table3_20140512
WHERE(LoadDate = (select MAX(LoadDate) FROM '+QUOTENAME(@table3)+' ))
) X '
PRINT @SQL; -- debugging
/* select x.*, convert(nvarchar(20), getdate(), 101) AS LoadDate
into [H1_20140512]
from (
select c1,c2,c3 from table2_20140512
WHERE(LoadDate = (select MAX(LoadDate) FROM [H2_20140512] ))
union all
select c1,c2,c3 from table3_20140512
WHERE(LoadDate = (select MAX(LoadDate) FROM [H3_20140512] ))
) X
EXEC sp_executeSQL @SQL;
Dynamic SQL examples:
http://www.sqlusa.com/bestpractices/dynamicsql/
Kalman Toth Database & OLAP Architect
SQL Server 2014 Design & Programming
New Book / Kindle: Exam 70-461 Bootcamp: Querying Microsoft SQL Server 2012 -
List Region with Dynamic Table name
Trying to build a page that is similar to Query Builder. On the left side of my page, I need to populate a list of table names from a SQL statement. Once the list is created, will need to perform some addtional actions when user clicks onthe specific row in the list.
What is the best way to create the list (based on SQL) that will allow me to be call some addtional processing when user clicks on the specific row?
Thanks!" this is the problem
* FROM (g_dso_bic_dofr )AS t1 "<<--- check spaces in here
FROM (g_dso_bic_dofr) AS t1 "<<--- and here
INNER JOIN /bic/pzifremom AS t2
ON t1~/bic/ziparomr = t2~/bic/ziparomr
" --- to here
I think there's the problem, the space behind the parenthesis.
Regards -
As users write a lot in text fields of, the table jumps to another page (it doesn't look nice) and overflows. Users can't see the rest of the table.
The problem seems to be the subform below. Do you have any ideas to avoid this without changing much the interface?
Cheers,
Edigo
PS: I couldn't find the attachment button to upload the form..it used to be at the bottom!!
Please check here for the form
http://www.megaupload.com/?d=OKGA03VEEdigo,
Here is the updated file for the issue with the Overall Field.
https://acrobat.com/#d=gDwYFDJIa6zSQ9JAtAaXUQ
See if the suggessitions column is working as per your requirement..
One thing is if you enter more text in any of the field, the Table/Row will do a page break if it extends beyond the height of the page.
Then if you enter a smaller length text in another field, then it will be displayed on the first page but since the row has been "Page Broken", if you click on the same field in second row it will also display the same text. (Once you remove your mouse from that field second page, the text will disappear. But it will be displayed in the first page all the time. The text in this field was not "Page Broken", that's the reason for this kind of behaviour).
Hope I explained it better for you..
Let me know if you need more help..
Thanks
Srini -
Problem with Dynamic table having row map.
Hi,
I need to create a table dynamically based on following inputs:
a.)Name and number of columns will be decided dynamically at run-time.
b.) Each row will contain a map of column values ,which will be dynamically generated by some other class.
In the same way multiple tables need to be created dynamically.
I tried created table for the same as following:
RichTable tb=new RichTable();
tb.setId("trs");
tb.setValue(UICredRowList.getMapListforRows());
for(Iterator itr=header.iterator();itr.hasNext();)
String headerKey = (String) itr.next();
RichColumn myCol = new RichColumn();
ExpressionFactory efact = FacesContext.getCurrentInstance(). getApplication().getExpressionFactory();
ValueExpression valExpr1 = efact.createValueExpression( elContext1,"#{row["+headerKey+"]}",Object.class);
resolveExpression("#{row["+headerKey+"]}") ;
myCol.setId("tc1");
myCol.setSortable(false);
myCol.setWidth("250");
myCol.setHeaderText(headerKey);
RichOutputText rot1 = new RichOutputText();
rot1.setValueExpression("value", valExpr1);
myCol.getChildren().add(rot1);
tb.getChildren().add(myCol);
Here when I checked the column value from Expression I am getting value as null.
Can someone help me how can I handle this type of table.Example will be highly appreciated.
Thanks in Advance
SunilWhich JDeveloper version do you use, if you use 12c or 11R2 you should find this option when you drag and drop the table to auto generate columns dynamically.
-
When i run the following code I get these exceptions. the exceptions appear when i enter something in the table. And i can't find out wat i'm doing wrong!!Could you please help me out with this problem.
code:
MyTableModel myModel = new MyTableModel();
JTable table = new JTable(myModel);
JScrollPane scrollPane = new JScrollPane(table);
this.getContentPane().add(scrollPane, new XYConstraints(22, 130, 580, 198));
//opmaak van de kolommen optie en commentaar
setUpOptieColumn(table.getColumnModel().getColumn(0));
setUpCommentaarColumn(table.getColumnModel().getColumn(1));
publiic void setUpOptieColumn(TableColumn optieColumn) {...}
public void setUpCommentaarColumn(TableColumn commentaarColumn) {...}
public void setValueAt(String value, int row, int column)
System.out.println("value: " + value);
System.out.println("Row: "+ row);
System.out.println("column: "+ column);
if (column == 0)
System.out.println("value: " + value);
System.out.println("Row: "+ row);
System.out.println("column: "+ column);
code = value;
myModel.data.add(row,new tabelgegevens (code,"",false));
if (column == 1)
System.out.println("value: " + value);
System.out.println("Row: "+ row);
System.out.println("column: "+ column);
myModel.data.add(row,new tabelgegevens (code,value,false) );
table.tableChanged(new javax.swing.event.TableModelEvent(myModel));
- MyTableModel -
class MyTableModel extends DefaultTableModel
protected static int NUM_COLUMNS = 3;
protected static int START_NUM_ROWS = 1;
protected int nextEmptyRow = 0;
public int numRows = 1;
static final public String code = "Code";
static final public String omschrijving = "Omschrijving";
static final public String wissen = "Wissen";
public Vector data = null;
/*final String[] columnNames = {"Code",
"Omschrijving","Wissen","test"};*/
/*Object[][] data = {{" "," ",new Boolean(false)," "}};*/
public MyTableModel()
data = new Vector(0,1);
data.addElement(new tabelgegevens ("","",false));
public int getColumnCount() {
return NUM_COLUMNS;
public int getRowCount() {
return numRows;
public String getColumnName(int column) {
switch (column)
case 0:
return code;
case 1:
return omschrijving;
case 2:
return wissen;
return "";
public Object getValueAt(int row, int column)
try{
tabelgegevens tg = (tabelgegevens) data.elementAt(row);
switch (column)
case 0:
return (Object)tg.code;
case 1:
return (Object)tg.omschrijving;
case 2:
if (tg.wissen)
return (Object)"true";
else
return (Object)"false";
}catch (Exception e)
return "";
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
public boolean isCellEditable(int row, int col)
//Note that the data/cell address is constant,
//no matter where the cell appears onscreen.
if (col > 2) {
return false;
} else {
return true;
exceptions:
Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Vector.java:417)
at javax.swing.table.DefaultTableModel.setValueAt(DefaultTableModel.java:674)
at javax.swing.JTable.setValueAt(JTable.java:1737)
at javax.swing.JTable.editingStopped(JTable.java:2992)
at javax.swing.AbstractCellEditor.fireEditingStopped(AbstractCellEditor.java:112)
at javax.swing.DefaultCellEditor$EditorDelegate.stopCellEditing(DefaultCellEditor.java:242)
at javax.swing.DefaultCellEditor.stopCellEditing(DefaultCellEditor.java:176)
at javax.swing.DefaultCellEditor$EditorDelegate.actionPerformed(DefaultCellEditor.java:251)
at javax.swing.JComboBox.fireActionEvent(JComboBox.java:870)
at javax.swing.JComboBox.selectedItemChanged(JComboBox.java:894)
at javax.swing.JComboBox.contentsChanged(JComboBox.java:950)
at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:79)
at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:86)
at javax.swing.JComboBox.setSelectedItem(JComboBox.java:415)
at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:455)
at javax.swing.plaf.basic.BasicComboPopup$ListMouseHandler.mouseReleased(BasicComboPopup.java:582)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:231)
at java.awt.Component.processMouseEvent(Component.java:3715)
at java.awt.Component.processEvent(Component.java:3544)
at java.awt.Container.processEvent(Container.java:1164)
at java.awt.Component.dispatchEventImpl(Component.java:2593)
at java.awt.Container.dispatchEventImpl(Container.java:1213)
at java.awt.Component.dispatchEvent(Component.java:2497)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125)
at java.awt.Container.dispatchEventImpl(Container.java:1200)
at java.awt.Window.dispatchEventImpl(Window.java:914)
at java.awt.Component.dispatchEvent(Component.java:2497)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:339)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:131)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:98)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
thx
lanfeust79I agree that creating a vector with size 0 isn't very useful. I've changed it, but i'm still getting the same exception.
I think the problem is in the 'getValueAt' method, although i can't figure out where it is.
I'm sorry i'm such a pain in the ass but i appriciate a lot your help. -
Data model with a dynamic table name
Hi,
I have report requirement, where in the table name in the data model query is unknown.So I use lexical parameter like " select * from &P_TABLE_NAME". This dynamic table is created and data populated in the before report trigger and table name is assigned to P_TABLE_NAME. The parameter P_TABLE_NAME has to be assigned an initial value otherwise the report errors with 'invalid table name' error. So I give a dummy table say 'DUMMY' as the initial value which has the same structure (with no data ) as the table that is being created in the before report trigger.
The problem is that the data model query is being parsed ( and maybe executed ) even before the 'before report' trigger is run. As a result, the report o/p is empty, since the query used the DUMMY table for execution. But after the report completes, I can see the dynamic table being created with data.
Question: Why is the before report trigger getting executed after the datamodel query is parsed and executed.
Regards,
SureshHi....
yes, these are the settings I have:
server folder: /Applications/MAMP/htdocs/dwphpelclasico
web url: http://localhost/dwphpelclasico/
They should be correct. But I still get the message:
Warning: require_once(Connections/elclasico.php) [function.require-once]: failed to open stream: No such file or directory in /Applications/MAMP/htdocs/dwphpelclasico/list.php on line 1
Could it be something with list.php?
This is a new file I created to display my tableand where I am inserted the record set.
thanks -
Passing dynamic table name in ADO. net destination
I am new to SSIS and I have a requirement where i need to pass dynamic table name in ADO .net destination .
My package contains an "Execute Sql task" in the control flow which computes the destination table name to be provided at run time and stores it in a variable expression
"@[User::Table_name]"(which has a scope of full package).
Now, the problem I'm facing right now is that , I am unable to use this variable expression in the ADO .Net Destination .
I need to pass this variable expression as the table name in ado .net destination.
But, whenever I use this variable in place as the table name I keep on getting this error and my package fails:-
[ADO NET Destination [403]] Error: The Table or View name is not expected. \n\t If you are quoting the table name, please use the prefix " and the suffix " of your selected data provider for quotation. \n\t If you are using multipart name,
please use at most three parts for the table name.
Although ,I am able to run my package when i am providing the existing(static) table name.So there is nothing wrong with the package.
Tried a lot of things still not working..Please help...I am having the result stored in the variable expression . I just need a way to be able to use it as the Destination table in ADO .net Destination.
I am not sure if this will work for you, but I am able to store the table name in variable and use it dynamically (via data flow task expression property ) as shown.
Thanks, hsbal
Hi Adeep,
Based on my further research, just as hsbal said, we can set a variable as ADO.NET Destination table via Expressions property in Data Flow Task.
If there are any other questions, please feel free to ask.
Thanks,
Katherine Xiong
Katherine Xiong
TechNet Community Support -
(Urgent) Dynamic Table Name
Hi Fellows,
Can I use dynamic table name in a loop? I have a problem that I want to use variable table in a cursor for example
procedure check_rows as
cursor c1 is
select view_name
from user_views;
v_count number;
v_view_name varchar2(35);
begin
for i in c1 loop
select count(*)
into v_count
from i.view_name;
if v_count = 0 THEN
dbms_output.put_line ('The View '| |i.view_name| |' has no rows');
end if;
end loop;
end;
but i receive a message
i.view_name must a name of a table to which the user has access.
Can anybody solve my problem.
Thanks in advance
MustafaHere is some codes I wrote with DBMS_SQL. I hope it will help you to start.
PROCEDURE Get_record(p_select IN OUT select_rec, where_str IN OUT varchar2) IS
my_keyblk varchar2(6);
veh_id integer;
ser_date date;
succ_flag number;
blk_route varchar2(4);
blk_run integer;
my_date_type integer;
cur_blk_route INTEGER;
rows_processed INTEGER;
ignore integer;
select_str varchar2(3000);
First_date date;
Last_date date;
BEGIN
begin
select start_date, end_date into first_date, Last_date from change_date
where current_next_code = 'CURRENT';
exception when others then
null;
end;
select_str := 'select keyblock, keycoach, proflag, pullout_date
from logblock
where (pullout_date between first_date and Last_date)
and proflag = 0';
cur_blk_route := dbms_sql.open_cursor;
dbms_sql.parse(cur_blk_route, select_str, dbms_sql.v7);
dbms_sql.define_column(cur_blk_route, 1, blk_route, 6);
dbms_sql.define_column(cur_blk_route, 2, blk_run);
dbms_sql.define_column(cur_blk_route, 3, veh_id);
dbms_sql.define_column(cur_blk_route, 4, ser_date);
ignore := dbms_sql.execute(cur_blk_route);
LOOP
if (dbms_sql.fetch_rows(cur_blk_route) > 0) then
dbms_sql.column_value(cur_blk_route, 1, blk_route);
dbms_sql.column_value(cur_blk_route, 2, blk_run);
dbms_sql.column_value(cur_blk_route, 3, veh_id);
dbms_sql.column_value(cur_blk_route, 4, ser_date);
else
dbms_output.put_line('ERROR ');
end if;
END LOOP;
dbms_sql.close_cursor(cur_blk_route);
END Get_record;
end apc_block_assign;
null -
How to set dynamic table name in sql query?
I want set dynamic table name by parameter in sql query,just like:
select * from :tbname
but run report is error,BI P report table name is invalidation.
What can i do? Thanks!Hi,
that's only possible inside a data template with a lexical parameter.
Regards
Rainer -
Hi everyone.
I want to know how export oracle tables with dynamic file name on windows XP platform.
bye.You'd have to generate the export command-line or par file using a script -- Windows or SQL !
It would be easy to use SQL to generate the script.
So you could have a BATch file that
a. Calls the SQL to generate the export command-line or parfile
b. Executes the export
even possibly run in a loop.
Hemant K Chitale -
Problem with maintain table views SM30 Transaction
Hello All,
i have a problem with the table maintenance view SM30, it doesn't permit me to modify the rows in the table.
we have added a field into the table and when i tried to change the table view from menu: Utilities ==> table maintenance generator==> change the system propose me a message that the screen 0001 will be deleted and recreated...but the system has deleted the screen and doesn't recreate it...in somewehere on internet we find that we should use the transaction SE55 menu:
Environment==> modification ==> Maintenance screen ==> button Layout which open the tool Screen Painter and from that we have created our screen with 4 fields of our table...our result that the screen is created and i can see it from the SM30 transaction but i can't insert rows in the table...when i try to go to maintain table: menu: Utilities ==> Table maintenance generator to try if i can modify something the system give me a message: "set the compare flag dialog ZIV_DP_PLCHAR_LA"
the ZIV_DP_PLCHAR_LA is the name of my table...
can you give me some advices please how should i do to fix this problem to insert rows in table throughout the transaction
SM30 "maintain table views: initial screen"
if i want to delete the screen from the SE55 transaction to recreate it newly what should i do to take care about some options
to have a new screen?
thanks for all
BilalHi
First delete the old table maintainence generator.
Now Recreate the screen and your table is good to go..
These error messages come when we add new fields and different version of the table maintainence generator in database. -
Dynamic table name from Arguments in cfquery /
I'm trying to use dynamic table names in a cfc but seem to
have hit upon a wall as my calling methods from flash keep hitting
my _error methods - Code attached to show what I'm trying to
achieve; if anyone can give me some pointers it would be a great
help. I've seen numerous by using the Form with the arguments but
this is coming into a gateway used by a flash component and doesn't
work no matter how much I fiddle the code.
Thanks in advanceThere was a time when I needed a dynamic query such as this.
BUT, it is very dangerous, which is why I took a few steps to make
it more secure.
1. Always use cfqueryparam and strict datatyping
2. Use listFindNoCase for known table names in the database
e.g
<cfset variables.tableNames =
"items,products,categories,blog" />
<cfif
listContainsNoCase(variables.tableNames,lCase(trim(arguments.tableName)),",")>
query here
<cfelse>
Error: Unknown table requested
</cfif>
Mikey -
I have been unable to back up my macbook to my time capsule for some time now. I received the following error message (translated from Swedish) when trying to back up using time machine:
"The network's volume could not be placed on the desktop. There was a problem with the user name or the password for the network.
Open system preferences and go to Time Machine. Select the volume for security backup again and state the correct user name and password."
I have confirmed the network password, and also tried with resetting the password. I have not idea what else to do. Any help is much appreciated.
Best regards,
JohnI have been unable to back up my macbook to my time capsule for some time now. I received the following error message (translated from Swedish) when trying to back up using time machine:
"The network's volume could not be placed on the desktop. There was a problem with the user name or the password for the network.
Open system preferences and go to Time Machine. Select the volume for security backup again and state the correct user name and password."
I have confirmed the network password, and also tried with resetting the password. I have not idea what else to do. Any help is much appreciated.
Best regards,
John
Maybe you are looking for
-
BB Curve, cannot email media files
Can someone help-on my Blackberry curve smartphone I can't e-mail media files but can only send them as MMS-and when I attach media files(pictures taken by the phone camera)they attach correctly to e-mails-but the e-mails fail with the error message
-
Redirect [SWF] and [Unload SWF] trace?
Hi all! I was wondering if there is a way to redirect or disable [SWF] and [Unload SWF] based messages when working with external SWFS. Ideally I would like to redirect trace statements, but I doubt that's possible. Thanks!
-
After buying new bold 9780 and trying to download some apps throught the desktop software and it wont work, comes up with some error saying " Apps world web Pluggin error" how do i fix this very frustrating.
-
Automatic revision level in CS01 on initial create
Hi, I have a task to find out about BOM revision levels and if they can be automatically created when the BOM is created in CS01. Our users are imaging that the step of choosing extras, next revision level will be too much for them to remember. Thi
-
CS3 doesn't want me to insert an iframe into a template. The menu under Insert>HTML is grayed out, and when I hand code it the preview shows only the content of the iframe and nothing of the rest of the page. I used iframes in templates before and it