pls help for the script!
- From: pmueller56@xxxxxxxxxxx (paul)
- Date: 25 Apr 2005 13:13:38 -0700
hello,
my script do not run with the parameter "
exec as @firma='LG', @arbg='01', @hierarchie=1" becomes the following
failure:
"... no convert char in numeric on column"!"
if i run the script with @firma='01' is this ok.
here is the script:
if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[as]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[as]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
achtung
*/
CREATE procedure as
@firma as char(2)='00',
@arbg as char(2)='00',
@hierarchie as int=1
as
declare
--@firma char(2), @arbg char(2), @hierarchie int,
@tabellenname char(30), @sql nchar(500),
@apostroph char(1), @orgarbg char(7), @laufvar int, @spalte char(2),
@spaltenname char(50),
@spalte_prev char(2), @spaltenname_prev char(50)
select @tabellenname='Fa'+@firma+'_ORG'+@arbg+'_Hier'+cast(@hierarchie
as char(2)),
@apostroph='''',
@orgarbg='kmorg'+@arbg
--Tabelle erstellen---------------------------------------------------------------------------
select @sql='if exists (select * from dbo.sysobjects where id =
object_id(N'+@apostroph+'['+ltrim(rtrim(@tabellenname))+']'+@apostroph+')
and OBJECTPROPERTY(id, N'+@apostroph+'IsUserTable'+@apostroph+') = 1)
drop table ['+ltrim(rtrim(@tabellenname))+']'
exec sp_executesql @sql
select @sql='create table
['+ltrim(rtrim(@tabellenname))+'](['+@orgarbg+'] char(20))'
exec sp_executesql @sql
-----------------------------------------------------------------------------------------------
--Spalte 1 füllen------------------------------------------------------------------------------
select @sql='insert into '+ltrim(rtrim(@tabellenname))+'('+@orgarbg+')
select ororg from kor00
where orarbg='+@arbg+' and orfnr='+@firma+' and (orbuch=''B'' or
orhber=1)'
exec sp_executesql @sql
------------------------------------------------------------------------------------------------
---Spalten aufbauen und
füllen------------------------------------------------------------------
set @laufvar=1
--Dummy-Tabelle Spaltenname erstellen
if exists (select * from dbo.sysobjects where id =
object_id(N'[Spaltennamen]') and OBJECTPROPERTY(id, N'IsUserTable') =
1)
drop table [Spaltennamen]
create table [Spaltennamen]([Laufvar] int, [Spaltenname] char(50))
--
while @laufvar<21
begin
select @spalte=case when @laufvar<10 then '0'+cast(@laufvar as
char(1)) else cast(@laufvar as char(2)) end
--Dummy-Tabelle Spaltenname füllen
select @sql= 'insert into spaltennamen select '+cast(@laufvar as
char(2))+' , case when hebez is null then
'+@apostroph+'Spalte'+@spalte+@apostroph+' else hebez end from xhs00
left join xhe00 on hsanw=heanw and hsarbg=hearbg and hsfnr=hefnr and
hsbr'+@spalte+'=heber where hsanw='+@apostroph+'K'+@apostroph+' and
hshi='+cast(@hierarchie as char(2))+' and hsfnr='+@firma+' and
hsarbg='+@arbg
--select @sql
exec (@sql)
----------------------------------
--Spalte zu Tabelle hinzufügen
select @spaltenname=spaltenname from spaltennamen where
laufvar=@laufvar
--Spalten für Elemente hinzufügen
select @sql='alter table '+rtrim(@tabellenname)+' add Level'+
rtrim(@spalte) +' char(50) null'
exec sp_executesql @sql
--Spalten für Elementbezeichnungen hinzufügen
select @sql='alter table '+rtrim(@tabellenname)+' add '+
rtrim(@spaltenname) +' char(50) null'
exec sp_executesql @sql
-------------------------------
--Spalten in Tabelle füllen
--Level füllen
select @sql='update '+ltrim(rtrim(@tabellenname))+' set
level'+ltrim(rtrim(@spalte))+'= hio'+ltrim(rtrim(@spalte))+' from
'+ltrim(rtrim(@tabellenname))+', kor00, khi00 where orarbg='+@arbg+'
and orfnr='+@firma+' and '+@orgarbg+'=hio01 and orarbg=hiarbg and
orfnr=hifnr and hihi='+cast(@hierarchie as char(2))+' and
ororg=hio'+@spalte
exec sp_executesql @sql
--NULL-Felder Level füllen
select @sql='update '+ltrim(rtrim(@tabellenname))+' set
level'+ltrim(rtrim(@spalte))+'='+@apostroph+'-'+@apostroph+' from
'+ltrim(rtrim(@tabellenname))+' where level'+ltrim(rtrim(@spalte))+'
is null'
exec sp_executesql @sql
--Bezeichnung füllen
select @sql='update '+ltrim(rtrim(@tabellenname))+' set
'+ltrim(rtrim(@spaltenname))+'=
ltrim(rtrim(level'+ltrim(rtrim(@spalte))+'))+'' ''+orbez from
'+ltrim(rtrim(@tabellenname))+', kor00, khi00 where orarbg='+@arbg+'
and orfnr='+@firma+' and '+@orgarbg+'=hio01 and orarbg=hiarbg and
orfnr=hifnr and hihi='+cast(@hierarchie as char(2))+' and
ororg=hio'+@spalte
exec sp_executesql @sql
--NULL-Felder Bezeichnung füllen
select @sql='update '+ltrim(rtrim(@tabellenname))+' set
'+ltrim(rtrim(@spaltenname))+'='+@apostroph+'-'+@apostroph+' from
'+ltrim(rtrim(@tabellenname))+' where '+ltrim(rtrim(@spaltenname))+'
is null'
exec sp_executesql @sql
select @laufvar=@laufvar+1
end
--Spalten Ebene 1 füllen, für Elemente, die nicht in Hierarchie
sind---
select @spaltenname=spaltenname from spaltennamen where laufvar=1
select @sql='update '+ltrim(rtrim(@tabellenname))+' set level01=
'+@orgarbg+' from '+ltrim(rtrim(@tabellenname))+' where level01 is
null'
exec sp_executesql @sql
select @sql='update '+ltrim(rtrim(@tabellenname))+' set
'+ltrim(rtrim(@spaltenname))+'= ltrim(rtrim('+@orgarbg+'))+'' ''+orbez
from '+ltrim(rtrim(@tabellenname))+' left join kor00 on ororg=level01
where '+ltrim(rtrim(@spaltenname))+' is null'
exec sp_executesql @sql
-- Anpassen Elementname --> Schreibe Parentname in Hierarchiesprünge
set @laufvar=19
while @laufvar>1
begin
select @spaltenname= spaltenname from spaltennamen where
laufvar=@laufvar
select @spaltenname_prev= spaltenname from spaltennamen where
laufvar=@laufvar+1
select @sql='update '+ltrim(rtrim(@tabellenname))+' set
'+ltrim(rtrim(@spaltenname))+'= '+ltrim(rtrim(@spaltenname_prev))+ '
where '+ ltrim(rtrim(@spaltenname))+ '=' +@apostroph+'-'+@apostroph
exec sp_executesql @sql
select @spalte=case when @laufvar<10 then '0'+cast(@laufvar as
char(1)) else cast(@laufvar as char(2)) end
select @spalte_prev=case when (@laufvar+1)<10 then
'0'+cast((@laufvar+1) as char(1)) else cast((@laufvar+1) as char(2))
end
-- Anpassen Elementkey --> Schreibe Parentkey+Level in
Hierarchiesprünge
select @sql='update '+ltrim(rtrim(@tabellenname))+' set
level'+ltrim(rtrim(@spalte))+'= ltrim(rtrim(
level'+ltrim(rtrim(@spalte_prev))+ ')) + '
+@apostroph+ltrim(rtrim(@spalte))+@apostroph+' where
level'+ltrim(rtrim(@spalte))+'=' +@apostroph+'-'+@apostroph
select @sql
exec sp_executesql @sql
set @laufvar=@laufvar-1
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
thanks paul
.
- Prev by Date: Re: Wie erreiche ich die beste Performance für den User mit 3Mio Datensaetzen? (was: Wie erreiche ich die beste Performance für den User mit 3Mio Datensätzen?)
- Next by Date: Re: Wie erreiche ich die beste Performance für den User mit 3Mio Datensaetzen?
- Previous by thread: Re: Wie erreiche ich die beste Performance für den User mit 3Mio Datensaetzen? (was: Wie erreiche ich die beste Performance für den User mit 3Mio Datensätzen?)
- Next by thread: Data-Steuerlement/DB-Grid
- Index(es):
Relevant Pages
|