У меня просто проблема с преобразованием кода T-SQL в PL/SQL.
Это исходная часть кода:
SET @ISOweek= DATEPART(wk,@DATE)+1
-DATEPART(wk,CAST(DATEPART(yy,@DATE) as CHAR(4))+'0104')
И после многих исследований я изменяю так:
SET @ISOweek = TO_NUMBER(TRUNC(@DATE, 'IW')) + 1
- TO_NUMBER(TRUNC( (TO_CHAR(TRUNC(@DATE, 'YYYY'))) + '0104', 'IW'))
Я не могу проверить свой код, поэтому я пришел сюда за вашей помощью. Можете ли вы сказать мне, если это правильно, или нет? И что я должен изменить, потому что я потерялся ... Я прочитал много статей на этом сайте, всегда полезно.
Спасибо за ваши ответы
Сердечно,
Гийом
С первой проблемой все в порядке, я получил много ответов и спасибо ;). Но у меня другая проблема:
Мой скрипт T-SQL:
USE [myBD ]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create function [Entity].[LPAD]
(
@pad_value varchar(500),
@pad_length int,
@pad_with varchar(10) = ' '
)
returns varchar(5000)
as
BEGIN
return ( replace(str(@pad_value,@pad_length),' ',@pad_with) )
END
GO
И я конвертирую его в PL/SQL:
create OR REPLACE FUNCTION myBDOrcl.LPAD
(
pad_value varchar2,
pad_length number,
pad_with varchar2 := ' '
)
return varchar2
is retour varchar2(5000);
BEGIN
retour := replace(TO_CHAR(pad_length, pad_value ), ' ', pad_with);
return retour;
END;
Я играю сценарий, и все в порядке. НО, я не знаю, как мне изменить свои переменные: pad_value_varchar2 и другие, чтобы указать размер... Я хочу разместить блок объявления, но он не работает....
Спасибо за помощь ребята
SET
, переменные не имеют префикса@
, оператор конкатенации строк в SQL —||
, а не+
, а оператор присваивания —:=
в PL/SQL. Вы должны показать нам полную хранимую процедуру - person a_horse_with_no_name   schedule 29.07.2015DATE
? - person user272735   schedule 29.07.2015